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

如何用dplyr批量修改多列值并添加后缀?

批量转换变量并添加后缀的简洁方法

针对你需要批量处理<dbl+lbl>类型列、生成带_t1后缀新列的需求,用dplyr的across()函数就能高效解决,这也是当前dplyr推荐的批量处理语法(替代旧版的mutate_at())。

方法1:匿名函数直接实现

可以直接在across()里写转换逻辑,通过.names参数指定新列的命名规则:

library(dplyr)

# 批量处理所有包含"Q26"的列,生成带_t1后缀的新列
samp <- samp %>%
  mutate(across(contains("Q26"), ~ifelse(.x == 1, 1, 0), .names = "{.col}_t1"))

方法2:简化转换逻辑(更简洁)

因为x == 1会返回布尔值(TRUE/FALSE),转成整数后正好对应1/0,所以可以进一步简化代码:

samp <- samp %>%
  mutate(across(contains("Q26"), ~as.integer(.x == 1), .names = "{.col}_t1"))

方法3:提前定义函数(逻辑复杂时可复用)

如果后续还要重复使用这个转换逻辑,可以先定义函数,再传入across():

# 定义转换函数
convert_to_t1 <- function(x) {
  as.integer(x == 1)
}

# 批量应用函数并添加后缀
samp <- samp %>%
  mutate(across(contains("Q26"), convert_to_t1, .names = "{.col}_t1"))

关键说明

  • .names = "{.col}_t1"是核心:{.col}会自动替换为原列名,从而生成Q26_1_1_t1、Q26_2_1_t1这类带后缀的新列。
  • across()支持更多列选择方式,比如starts_with("Q26")、matches("Q26_\\d+_\\d+")(正则匹配),可以根据你的列名格式灵活选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:02:54