R:重命名来自不同数据集的列



我有两个数据帧:

Names =
code meaning
A    Blue
B    Red
C    Green
df =
id A B C
1  5 7 7

我想根据数据帧名称的含义更改df的列名:

Result =
id Blue Red Green
1  5    7   7

我正在尝试使用函数gsub,但我不确定如何实现它

您可以使用matchNames数据帧中获取匹配的名称。如果名称不匹配(id(,保持原始名称不变。

names(df) <- dplyr::coalesce(Names$meaning[match(names(df), Names$code)], names(df))
df
#  id Blue Red Green
#1  1    5   7     7

dplyr中使用rename_with,可以执行以下操作:

library(dplyr)
df %>% rename_with(~Names$meaning[match(., Names$code)], Names$code)

最新更新