在R中修改以C_1结尾的指定列的字符值
实现方法
方法一:Base R 原生语法
- 定位所有列名以
_C_1结尾的列:
cols_to_modify <- grep("_C_1$", colnames(df), value = TRUE)
- 定义值映射规则:
map_rules <- c( apple = "sweet-sour", banana = "sweet", kiwi = "sour", milk = "tasteless" )
- 批量替换目标列的取值:
df[cols_to_modify] <- lapply(df[cols_to_modify], function(col) map_rules[col])
方法二:dplyr 语法(简洁直观)
先加载dplyr包,通过across()匹配目标列,再用recode()完成值映射:
library(dplyr) df_modified <- df %>% mutate( across( matches("_C_1$"), # 匹配列名以_C_1结尾的列 ~ recode(., apple = "sweet-sour", banana = "sweet", kiwi = "sour", milk = "tasteless" ) ) )
验证效果
查看修改后目标列的前几行结果:
head(df_modified[, cols_to_modify])
原apple/banana/kiwi/milk会被替换为对应的描述值,非目标列(如H_1E_1、I_1D_1等)保持原样。
内容的提问来源于stack exchange,提问作者dplyr
相关产品推荐
相关产品推荐

