我有一个表(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
工作正常,但不幸的是,列的添加顺序不正确...
答案 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