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

R语言无需硬编码列名如何对所有列的重复行分组求和

实现方法汇总

以下三种方案均不需要硬编码列名,也不需要手动循环合并,适配任意数量的列的分组求和需求:

  • 方案1:Base R原生aggregate实现(无需额外安装包)
    直接使用公式语法中的.指代除分组列之外的所有列,完全贴合你原来的代码使用习惯:
# 一行完成所有列按name分组求和
aggregate(. ~ name, data = dat, sum)

对应你的示例输出结果如下:

name etc4 etc1 etc2
1    A   30   19   11
2    B    2    7    5
3    C   90   12    1

  • 方案2:dplyr实现,语法可读性强
    如果你常用tidyverse生态,用across()匹配规则即可动态适配任意数量的非分组列:
library(dplyr)
dat %>% 
  group_by(name) %>% 
  # 如果存在不需要求和的非数值列,可以改成across(where(is.numeric), sum)
  summarise(across(everything(), sum))

  • 方案3:data.table实现,适配超大数据/多列场景
    如果你的表格列数极多、数据量很大,data.table的运算效率远高于前两种方案:
library(data.table)
setDT(dat)
# .SD指代分组后的所有非分组列,批量求和
dat_res <- dat[, lapply(.SD, sum), by = name]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:36:03