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

基于列名批量创建新列的R语言实现方法求助

自动化生成以'x'结尾列的翻倍新列

方法一:用dplyr的across()函数(推荐)

利用across()可以批量处理符合条件的列,搭配ends_with()筛选以'x'结尾的列,同时通过.names参数指定新列的命名规则,一步完成所有目标列的处理:

library(dplyr)
set.seed(8)
id <- seq(1,700, by = 1)
a1_x <- runif(700, 0, 10)
a1_y <- runif(700, 0, 10)
a2_x <- runif(700, 0, 10)

df <- data.frame(id, a1_x, a1_y, a2_x)

# 自动化生成新列
df <- df %>%
  mutate(across(ends_with("x"), ~ .x * 2, .names = "{col}_new"))

代码解释:

  • ends_with("x"):精准筛选所有列名以'x'结尾的列;
  • ~ .x * 2:对每一列执行“乘以2”的操作,.x代表当前处理的列;
  • .names = "{col}_new":新列名规则为原列名加上_new,和你手动实现的命名完全一致。

方法二:Base R 实现

如果不想依赖dplyr,也可以用Base R的方式批量处理:

# 筛选以'x'结尾的列名
x_cols <- grep("x$", names(df), value = TRUE)
# 循环生成新列
for(col in x_cols) {
  df[[paste0(col, "_new")]] <- df[[col]] * 2
}

代码解释:

  • grep("x$", names(df), value = TRUE):用正则表达式匹配以x结尾的列名;
  • 循环遍历每个目标列,通过paste0拼接新列名,赋值为原列值的2倍。

不管涉及多少列,以上两种方法都能一次性完成自动化处理,不用再手动逐个编写mutate语句。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:35:22