You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在dplyr的select调用中同时实现多列选择与重命名可行吗?

解决方案:在单个select()调用中完成选择与重命名

可以利用dplyr 1.0.0及以上版本的across()函数,在select()内部同时完成列选择和批量重命名,完全匹配你的需求:

library(dplyr)
library(stringr)

df1 %>% 
  select(
    Location,
    across(
      starts_with("pct"),
      .names = "{str_replace(.col, 'pct_lessequal_4wks_', '')}"
    )
  )

代码说明

  • Location:直接保留原列名选择该列
  • across(starts_with("pct"), ...):批量选中所有以pct开头的列
  • .names = "{str_replace(.col, 'pct_lessequal_4wks_', '')}":通过glue语法动态生成新列名,用str_replace移除指定前缀,仅保留后缀部分

运行后得到的结果列名是:Location, current, baseline, pre_mandate,完全符合预期。

备选方案:预构建命名向量

如果需要重复使用列名映射规则,可先构建「原列名-新列名」的命名向量,再通过all_of()传入select():

# 生成列名映射向量
pct_col_mapping <- starts_with("pct")(df1) %>% 
  set_names(str_replace(., "pct_lessequal_4wks_", ""))

# 一步完成选择与重命名
df1 %>% select(Location, all_of(pct_col_mapping))

内容的提问来源于stack exchange,提问作者PhDavey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 16:52:16