我有两个数据帧:
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
,但我不确定如何实现它
您可以使用match
从Names
数据帧中获取匹配的名称。如果名称不匹配(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)