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

如何为DataFrame添加按分组求和的sum_by列

在R中为DataFrame添加分组求和列sum_by

你需要给现有DataFrame新增sum_by列,该列的值对应每行所在group分组的points列总和,以下是两种常用实现方法:

原始数据

name <- c("Emma", "Joe", "Jack", "Eva", "Ann")
group <- c("a", "a", "b", "a", "c")
points <- c(5, 4, 6, 8, 9) 
df <- data.frame(name, group, points)

方法一:使用Base R的ave()函数

ave()可以直接按分组计算并返回与原数据长度匹配的结果,无需额外合并操作:

df$sum_by <- ave(df$points, df$group, FUN = sum)

方法二:使用dplyr包(tidyverse生态)

如果习惯使用tidy风格的代码,可以用dplyr的分组+突变操作:

library(dplyr)

df <- df %>%
  group_by(group) %>%
  mutate(sum_by = sum(points)) %>%
  ungroup()  # 取消分组,避免后续操作受分组影响

最终结果

执行上述任意一种方法后,df将变为你期望的结构:

> df
   name group points sum_by
1 Emma     a      5     19
2  Joe     a      4     19
3 Jack     b      6      6
4  Eva     a      8     19
5  Ann     c      9      9

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 02:16:03