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

在R语言中如何按组对行求和?合并相同物料与日期的行

合并相同物料与日期的行并对数量求和

需求:将数据集中**Item(物料)和Date(日期)**相同的行合并,对Quantity列的值求和,同时保留Description列(相同分组下该列值一致)。

原始数据集

library(tibble)
df <- tibble::tribble(
     ~Item,        ~Date,   ~Description, ~Quantity,
     "Saw", "01/02/2020",      "outdoor",        2L,
     "Saw", "01/02/2020",      "outdoor",        3L,
     "Saw", "01/04/2020",      "outdoor",        4L,
   "nails", "01/02/2020", "construction",        2L,
   "nails", "01/04/2020", "construction",        3L,
   "nails", "01/06/2020", "construction",        4L,
  "hammer", "01/01/2020",         "home",        1L,
  "hammer", "01/01/2020",         "home",        2L,
  "hammer", "01/01/2020",         "home",        3L
)

解决方案1:使用dplyr包

这是R中常用的tidyverse风格操作,通过分组后聚合实现:

library(dplyr)
df_agg <- df %>%
  group_by(Item, Date, Description) %>%
  summarize(Quantity = sum(Quantity), .groups = "drop")
  • group_by(Item, Date, Description):按物料、日期、描述分组(相同物料+日期的描述一致,加入分组可直接保留该列)
  • summarize(Quantity = sum(Quantity)):对每组的数量求和
  • .groups = "drop":取消分组状态,返回普通数据框

解决方案2:使用data.table包

如果处理大数据集,data.table的运行效率更高:

library(data.table)
setDT(df)
df_agg <- df[, .(Quantity = sum(Quantity)), by = .(Item, Date, Description)]

最终结果

运行上述任意代码后,得到的结果与期望一致:

tibble::tribble(
     ~Item,        ~Date,   ~Description, ~Quantity,
     "Saw", "01/02/2020",      "outdoor",        5L,
     "Saw", "01/04/2020",      "outdoor",        4L,
   "nails", "01/02/2020", "construction",        2L,
   "nails", "01/04/2020", "construction",        3L,
   "nails", "01/06/2020", "construction",        4L,
  "hammer", "01/01/2020",         "home",        6L
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 16:48:20