【发布时间】:2020-02-06 18:17:38
【问题描述】:
我想根据另一个数据框重命名数据框中的某些列。我有 2 个数据框,一个带有代码作为列名,另一个带有代码列表和字符串。
df = as.data.frame(matrix(NA, 3, 60)) colnames(df) = c(paste0(sprintf("S%s",seq(10,19))), paste0(sprintf("R%s",seq(20,50))), paste0(sprintf("F%s",seq(51,69))))
namelist = as.data.frame(c(paste0(sprintf("B%s",seq(10,19))), paste0(sprintf("R%s",seq(20,50))), paste0(sprintf("A%s",seq(51,69)))))
colnames(namelist) = "Code"
myFun <- function(n = 5000) {
a <- do.call(paste0, replicate(5, sample(LETTERS, n, TRUE), FALSE))
paste0(a, sprintf("%04d", sample(9999, n, TRUE)), sample(LETTERS, n, TRUE))}
namelist$Name = myFun(nrow(namelist))
我现在想重命名 df 中的列名,这些列在名称列表中。他们的新名称应该是列表中匹配代码后面的字符串。
结果应该是:保留未在名称列表中作为代码列出的列名,并将 R20-R50 替换为字符串。
我需要一个真正将代码整合为一体的解决方案,因为我也可能将代码组合为列名,如 R40+R41,不应重命名。
知道怎么做吗?
【问题讨论】:
-
因为它是
sample,如果没有set.seed,我的结果将与您的结果不同。您能否检查一下我提供的解决方案是否符合您的逻辑预期
标签: r dataframe multiple-columns matching