根据数据表仅更改特定的列名

时间:2019-01-21 12:54:01

标签: r

我有一个表(dt_replace),其中包含要替换的实际列及其对应的新列:

column new
col1    new1
col2   new2
col3   new3
...    ...

我需要重命名的原始表(dt)有100列,而dt_replace只有50列。

到目前为止,我尝试使用功能重命名的dplyr库:

c = dt_replace$column
r = dt$new
rename(dt, c = r)

但是它不起作用,然后我使用ColNames尝试了以下操作:

colnames(dt)[colnames(dt) %in% dt_replace$column] <- dt_replace$new

工作正常,但不幸的是,列的添加顺序不正确...

1 个答案:

答案 0 :(得分:1)

尝试match

colnames(dt)[match(dt_replace$column, names(dt))] <- dt_replace$new

添加可复制的示例

dt <- mtcars
dt_replace <- data.frame(column = c("mpg", "hp"), new = c("new1", "new2"), 
                         stringsAsFactors = FALSE)

colnames(dt)[match(dt_replace$column, names(dt))] <- dt_replace$new

head(dt)
#                  new1 cyl disp new2 drat    wt  qsec vs am gear carb
#Mazda RX4         21.0   6  160  110 3.90 2.620 16.46  0  1    4    4
#Mazda RX4 Wag     21.0   6  160  110 3.90 2.875 17.02  0  1    4    4
#Datsun 710        22.8   4  108   93 3.85 2.320 18.61  1  1    4    1
#Hornet 4 Drive    21.4   6  258  110 3.08 3.215 19.44  1  0    3    1
#Hornet Sportabout 18.7   8  360  175 3.15 3.440 17.02  0  0    3    2
#Valiant           18.1   6  225  105 2.76 3.460 20.22  1  0    3    1