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

R语言中如何对数据框按两个分类列分组实现行求和?

R语言数据框求和相关操作说明

如果是做单行跨列的行级求和,直接用基础R内置的rowSums()函数即可。
如果是你提到的「按分类列分组后对组内数值列汇总求和」场景,可以通过以下几种主流方式实现,完全匹配你的处理规则与预期输出:
你的处理规则可以拆为两步:

  • 提取team列值的首字母,作为新的分组维度
  • 按country、处理后的team两个维度分组,对x1990、x2005列分别求和

方法1:dplyr实现(可读性最高,日常分析最常用)

library(dplyr)

df_sum <- df %>%
  mutate(team = substr(team, 1, 1)) %>% # 提取team首字母
  group_by(country, team) %>% # 双列分组
  summarise(x1990 = sum(x1990),
            x2005 = sum(x2005),
            .groups = "drop") # 计算完成后取消分组状态

方法2:基础R实现(无需安装第三方包)

# 先处理team列
df$team <- substr(df$team, 1, 1)
# 分组聚合
df_sum <- aggregate(cbind(x1990, x2005) ~ country + team, 
                    data = df, 
                    FUN = sum)

方法3:data.table实现(大数据量场景性能最优)

library(data.table)
setDT(df)
# 直接在分组参数里处理team列,一步完成计算
df_sum <- df[, .(x1990 = sum(x1990), x2005 = sum(x2005)), 
             by = .(country, team = substr(team, 1, 1))]

以上三种方法运行后得到的结果,和你给出的期望汇总表完全一致。

注:示例中用substr(字符串, 1, 1)提取首字母,完全适配team列「字母+数字」的格式,如果后续有更复杂的字符串提取规则,替换对应字符串处理函数即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 02:48:33