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

如何在R语言中按员工分组汇总数据框sold列并生成新数据框?

按员工姓氏汇总销售总量

我有一个名为df的数据框,结构如下(实际数据量更大):

txnID   date        product          sold   repID   lastName
1001    8/5/2020    Clobromizen      600    203     Kappoorthy
1002    6/28/2020   Alaraphosol      276    887     da Silva
1003    6/28/2020   Alaraphosol      184    887     da Silva
1004    4/16/2020   Diaprogenix       36    887     da Silva
1005    6/14/2020   Diaprogenix       40    887     da Silva
1006    5/19/2020   Xinoprozen      5640    332     McRowe
1007    8/23/2020   Diaprogenix       60    332     McRowe
1008    11/14/2020  Clobromizen     2880    332     McRowe
1009    9/26/2020   Colophrazen      738    203     Kappoorthy
1010    2/5/2020    Diaprogenix       20    332     McRowe
1011    9/23/2020   Gerantrazeophem 3740    100     Schwab
1012    12/4/2020   Clobromizen     1584    221     Sixt

需要生成新数据框df1,汇总每位员工的所有产品销售总量,目标格式如下:

View(df1)
   lastName    totalSold
1  Kappoorthy  1338
2  da Silva    536
3  McRowe      8600
4  Schwab      3740
5  Sixt        1584

解决方案

方法1:Base R 原生实现

使用aggregate()函数直接完成分组求和:

df1 <- aggregate(sold ~ lastName, data = df, FUN = sum)

该函数会自动按lastName分组,计算每组sold列的总和,返回结果即为所需的汇总数据框。

方法2:dplyr 包实现

如果偏好tidyverse风格代码,可使用dplyr完成分组汇总:

  1. 先安装并加载dplyr包(首次使用需执行安装):
install.packages("dplyr")
library(dplyr)
  1. 执行分组求和:
df1 <- df %>%
  group_by(lastName) %>%
  summarise(totalSold = sum(sold)) %>%
  ungroup()
  • group_by(lastName)指定按姓氏分组
  • summarise(totalSold = sum(sold))计算每组销售总量并命名为totalSold
  • ungroup()可选,用于取消分组状态,避免后续操作受分组影响

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:31:12