【发布时间】:2021-04-12 23:19:35
【问题描述】:
我知道有一种简单的方法可以做到这一点,但我不记得我是如何做到的,也找不到我的笔记。基本上我有一个带有一堆列名的数据框。我还有一个键值对数据框,其中包含一些需要替换现有列名的新列名。我想重命名所有有一对的列(没有一个没有)。例如,我们可以使用 mtcars:
x<-mtcars
idkey <- data.frame("original" = c("cyl","hp"), "new" = c("cylinder", "horsepower"))
> head(x)
mpg cyl disp hp 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
> idkey
original new
1 cyl cylinder
2 hp horsepower
我只想替换 idkey 中存在的 x 中的列名。所以在替换之后的名称(x)将从这个
> names(x)
[1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear" "carb"
到这里:
> names(x)
[1] "mpg" "cylinder" "disp" "horsepower" "drat" "wt" "qsec" "vs" "am" "gear" "carb"
请注意,我需要它仅重命名键中存在的列,因此某些列可能不会被重命名并且它们不会按任何特定顺序排列。
【问题讨论】: