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

如何在R中按列名前缀批量计算行和并自动命名新列

问题描述

需要对数据框中列名前缀相同的列计算行和,新列名直接使用对应的前缀,且无需手动命名新列(后续可能新增其他前缀的列)。

输入数据框示例:

#        m_16 w_16 w_17 m_17 w_18 m_18 
#values1    3    4    8    1   12    4
#values2    8    0   12    1    3    2  

期望输出:

#        m_16 w_16 w_17 m_17 w_18 m_18     m     w
#values1    3    4    8    1   12    4     8    24
#values2    8    0   12    1    3    2    11    15

解决方案

可以通过以下步骤实现自动按前缀计算行和并命名新列:

  1. 提取所有唯一前缀:从列名中拆分出下划线前的部分,去重得到所有需要计算的前缀
  2. 用lapply批量计算行和:遍历每个前缀,筛选对应列并计算行和
  3. 合并结果到原数据框:将计算得到的行和数据框与原数据框合并

完整代码如下:

# 构造示例数据框
df <- data.frame(
  m_16 = c(3, 8),
  w_16 = c(4, 0),
  w_17 = c(8, 12),
  m_17 = c(1, 1),
  w_18 = c(12, 3),
  m_18 = c(4, 2),
  row.names = c("values1", "values2")
)

# 提取唯一前缀
prefixes <- unique(sub("_.*", "", colnames(df)))

# 批量计算行和
sum_cols <- lapply(prefixes, function(p) {
  rowSums(df[, grepl(paste0("^", p), colnames(df))])
})
# 给结果命名前缀
names(sum_cols) <- prefixes
# 转换为数据框
sum_df <- as.data.frame(sum_cols)

# 合并原数据框和结果
result_df <- cbind(df, sum_df)

# 查看结果
result_df

运行后会自动生成对应前缀的行和列,后续新增其他前缀(如z_xx)的列时,代码无需修改即可自动识别并计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 22:35:22