R语言SUM数据集DR01至DR07列批量重命名为DRxx_DRxx_PV格式的方法
实现方案
你可以用dplyr内置的rename_with()函数批量匹配目标列完成重命名,操作非常简便,代码如下:
# 方法1:生成SUM数据集后批量重命名 library(dplyr) library(stringr) SUM <- SUM %>% rename_with( # 定义重命名规则:原列名_原列名_PV .fn = ~ paste0(.x, "_", .x, "_PV"), # 精准匹配DR01到DR07的列,避免误改其他列 .cols = matches("^DR0[1-7]$") )
如果你希望在生成SUM的过程中一步完成命名,不需要后续额外处理,可以修改最后的pivot_wider步骤,通过names_glue参数直接指定命名规则:
# 方法2:生成SUM时直接设置目标列名 SUM <- df %>% pivot_longer(-c(date2:Week)) %>% left_join(PV %>% rename_with( ~str_remove(., "_PV")) %>% pivot_longer(-Week, values_to = "PV")) %>% mutate(new_value = value + PV) %>% select(-c(value:PV)) %>% pivot_wider( names_from = name, values_from = new_value, # 仅对DR01-DR07应用特殊命名规则,其余列保持原名 names_glue = if_else(str_detect(name, "^DR0[1-7]$"), paste0(name, "_", name, "_PV"), name) )
两种方法运行后,SUM数据集的DR01到DR07列都会自动更新为你需要的DR01_DR01_PV、DR02_DR02_PV格式,其他列(date2、Week、D1)保持不变。
内容的提问来源于stack exchange,提问作者user16774617
相关产品推荐
相关产品推荐

