如何用dplyr批量重命名变量:将特定后缀替换为_1/_2/_3?
使用dplyr批量重命名变量
你需要批量将数据集中所有以_Baseline、_FollowUp、_Exit结尾的变量后缀,替换为_1、_2、_3,无需逐个手动重命名。
原始数据
ID Satisfaction_Baseline Satisfaction_FollowUp Satisfaction_Exit 1 1 3 4 2 5 5 5 3 5 3 4 4 5 3 2 5 5 3 5
目标数据
ID Satisfaction_1 Satisfaction_2 Satisfaction_3 1 1 3 4 2 5 5 5 3 5 3 4 4 5 3 2 5 5 3 5
你已尝试单个变量重命名:
rename(D_wide, Satisfaction_1 = Satisfaction_Baseline)
解决方案
方法1:全局批量替换
利用dplyr的rename_with()结合stringr的str_replace_all(),通过定义替换规则一次性完成所有匹配变量的重命名:
library(dplyr) library(stringr) # 定义后缀替换规则 replace_rules <- c( "_Baseline" = "_1", "_FollowUp" = "_2", "_Exit" = "_3" ) # 执行批量重命名 D_wide_renamed <- D_wide %>% rename_with(~ str_replace_all(., replace_rules))
这个方法会自动扫描所有变量名,匹配到目标后缀就替换,不管有多少个同类型变量都能处理。
方法2:仅重命名特定前缀的变量
如果只想修改以Satisfaction_开头的变量,避免误改其他带相同后缀的变量,可以添加筛选条件:
D_wide_renamed <- D_wide %>% rename_with( ~ str_replace_all(., replace_rules), starts_with("Satisfaction_") # 仅处理符合前缀的变量 )
内容的提问来源于stack exchange,提问作者Reap409
相关产品推荐
相关产品推荐

