R语言如何按ID列分组对数据框多列值进行求和汇总
R语言按ID分组对多列求和实现方案
不需要写循环实现多列分组求和,dplyr提供了直接适配多列场景的批量操作语法,以下是几种简洁的实现方式:
dplyr 推荐写法(适配1.0.0及以上版本)
使用across()函数搭配列选择助手,可以一次性对所有需要计算的列应用求和逻辑,完全兼容你现有的dplyr代码写法:
library(dplyr) result <- df %>% group_by(ID) %>% summarise(across(everything(), sum)) %>% as.data.frame()
代码说明:
everything()是dplyr内置的列选择助手,会自动选中除分组列ID外的所有列,对应你数据中Var1到Var85的全部待求和字段,不需要手动逐个输入列名- 如果后续需要指定仅对部分列求和,可以灵活调整列选择规则,比如
across(starts_with("Var"), sum)就只会对列名以Var开头的字段执行求和
旧版dplyr写法(不推荐新项目使用)
早期dplyr版本可以使用summarise_all实现相同效果,目前该函数已被标记为替代状态,优先推荐使用上面的across写法:
result <- df %>% group_by(ID) %>% summarise_all(sum) %>% as.data.frame()
基础R实现(无需加载第三方包)
如果不想依赖dplyr包,直接用基础R的aggregate函数也可以一行实现:
result <- aggregate(. ~ ID, data = df, FUN = sum)
公式中.代表除左侧分组列ID外的所有其他列,运行后输出结果和你预期的分组求和效果完全一致。
内容的提问来源于stack exchange,提问作者Marble
相关产品推荐
相关产品推荐

