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

如何基于大型DataFrame按日期、类别及类型聚合生成汇总DataFrame?

处理大规模DataFrame的多维度日期汇总需求

嘿,我懂你需要基于那份不能修改的超大DataFrame,按日期统计三个层级的quantity总和:每日总quantity、各category的每日总quantity,还有每个category+type组合的每日总quantity。下面给你两种在R里的实现方案,全程不会改动原数据,放心用:

方案一:用dplyr实现(语法直观易读)

先确保你装了dplyr包(处理大数据也很高效):

install.packages("dplyr")
library(dplyr)

我们分三步生成不同层级的汇总,再合并到一起:

  1. 计算每日总quantity
daily_total <- df %>%
  group_by(date) %>%
  summarise(
    category = "Total",
    type = "Total",
    total_quantity = sum(quantity)
  )
  1. 计算每个category的每日总quantity
category_daily <- df %>%
  group_by(date, category) %>%
  summarise(
    type = "Total",
    total_quantity = sum(quantity)
  )
  1. 计算每个category+type组合的每日总quantity
category_type_daily <- df %>%
  group_by(date, category, type) %>%
  summarise(
    total_quantity = sum(quantity)
  )

最后把三个结果合并成完整的汇总表,还可以按日期、category、type排序,看起来更清晰:

summary_df <- bind_rows(daily_total, category_daily, category_type_daily) %>%
  arrange(date, category, type)

方案二:用data.table实现(超大规模数据首选)

如果你的数据量真的大到百万级甚至更多,data.table的速度优势会非常明显。先安装加载:

install.packages("data.table")
library(data.table)

把原DataFrame转成data.table(只是生成副本,完全不碰原数据):

dt <- as.data.table(df)

同样分三步生成汇总:

# 每日总quantity
daily_total_dt <- dt[, .(category = "Total", type = "Total", total_quantity = sum(quantity)), by = date]

# 各category的每日总quantity
category_daily_dt <- dt[, .(type = "Total", total_quantity = sum(quantity)), by = .(date, category)]

# 各category+type组合的每日总quantity
category_type_daily_dt <- dt[, .(total_quantity = sum(quantity)), by = .(date, category, type)]

# 合并并排序结果
summary_dt <- rbind(daily_total_dt, category_daily_dt, category_type_daily_dt)[order(date, category, type)]

验证你的示例数据

用你给的2021-01-09的测试数据跑的话,结果完全符合你的要求:

  • 当日总quantity是0.117
  • UKS的总量是0.001+0.018+0.010+0.023=0.052
  • USD的总量是0.003+0.043+0.005+0.005=0.056
  • UKZ和UKY的总量分别是0.001和0.008

整个过程都是基于原数据生成新的汇总表,绝对不会修改你原有的大DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 12:17:31