如何为数据集CTDB中指定列组添加后缀_Child
批量为CTDB数据集指定列添加"_Child"后缀的解决方案
我来帮你解决这个批量修改列名的问题,不用手动逐个重写,有几种高效的方法可以实现,根据你的需求选择即可:
方法1:基于指定列名列表修改
如果你已经明确知道需要修改的列名,可以先把这些列名存为一个向量,再用dplyr包的rename_with函数批量处理:
library(dplyr) # 定义需要添加后缀的目标列名 target_cols <- c("SCARED_BREATHE", "SCARED_HEADACHE_SCHOOL", "SCARED_DISLIKE_STRANGERS", "SCARED_SLEEP_AWAY_HOME", "SCARED_LIKE_ME", "SCARED_PASS_OUT", "SCARED_NERVOUS", "SCARED_FOLLOW_PARENT", "SCARED_LOOK_NERVOUS", "SCARED_NERVOUS_AROUND_STRANGER", "SCARED_STOMACHACHE_SCHOOL", "SCARED_FEEL_CRAZY", "SCARED_SLEEP_ALONE", "SCARED_NOT_AS_GOOD", "SCARED_NOT_REAL", "SCARED_NIGHTMARE_PARENTS", "SCARED_SCHOOL", "SCARED_HR_FAST", "SCARED_SHAKY", "SCARED_NIGHTMARE") # 批量为目标列添加"_Child"后缀 CTDB <- CTDB %>% rename_with(~ paste0(., "_Child"), all_of(target_cols))
方法2:基于列索引修改
从你给出的列位置(第9到29列)来看,也可以直接通过列索引批量修改,Base R和dplyr都能实现:
Base R 版本
# 获取数据集当前列名 col_names <- colnames(CTDB) # 为第9到29列添加后缀 col_names[9:29] <- paste0(col_names[9:29], "_Child") # 将修改后的列名重新赋值给数据集 colnames(CTDB) <- col_names
dplyr 版本
CTDB <- CTDB %>% rename_with(~ paste0(., "_Child"), 9:29)
方法3:基于列名前缀匹配(更简洁)
观察你给出的列名,所有需要修改的列都以SCARED_开头,这种情况下可以直接匹配前缀,不用手动列所有列名:
CTDB <- CTDB %>% rename_with(~ paste0(., "_Child"), starts_with("SCARED_"))
这个方法最省心,只要是前缀符合的列都会自动添加后缀,适合列名有统一规律的场景。
内容的提问来源于stack exchange,提问作者KKhosra
相关产品推荐
相关产品推荐

