r - 使用键值对字典有选择地重命名 R 数据框列名

标签 r dataframe

我知道有一种简单的方法可以做到这一点,但我不记得我是怎么做的,也找不到我的笔记。基本上我有一个带有一堆列名的数据框。我还有一个键值对数据框,其中包含一些需要替换现有列名的新列名。我想重命名所有有一对(没有没有)的列。例如,我们可以使用 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"

注意我需要这个到 只有重命名键中存在的列,因此某些列可能不会重命名,并且它们不会按任何特定顺序排列。

最佳答案

dplyr::recode也可以:

colnames(x) <- dplyr::recode(
  colnames(x), 
  !!!setNames(as.character(idkey$new), idkey$original)
)

关于r - 使用键值对字典有选择地重命名 R 数据框列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59314285/

相关文章:

python - 为什么 C++ Armadillo 的某些特征向量符号与 Python 和 R 不同

在 R 中使用 pROC 的随机森林拟合对象的 ROC 曲线,使用正或负 "votes"作为预测变量

python - 基于多列值函数的DataFrame排序

python - 如何生成范围列表以从 pandas 数据框中获取行子集?

python - 在 Pandas 时间序列中每天查询相同的时间值

R 代码按 % 拆分值,然后为每个新的 % 值分配一个新类别

r - 日期的时间距离矩阵

r - 使用 gsub 转换模式

r - 如何根据另一个数据框的值删除数据框中的行

r - 连接系统 R 中的两个或多个数据帧