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

如何用dplyr实现分组后同时获取分组统计与订单级汇总?

问题:使用dplyr同时计算分组统计与订单级汇总值

需求:在使用dplyr进行分组操作时,需同时计算两类统计值并在同一视图展示:

  • 基于order和type两个变量的分组统计值total_by_order_type(每组的记录数)
  • 基于单个变量order的订单级汇总值total_by_order(对应订单下所有total_by_order_type的总和)

当前代码与问题

当前使用的代码:

view(df %>% 
     group_by(order, type) %>% 
     summarize(total_by_order_type = n(),
               total_by_order = n())
    )

当前输出结果:

ordertypetotal_by_order_typetotal_by_order
1A55
1B77
2A22
3A1010
3B66

问题:total_by_order列错误地使用了当前order+type分组的记录数,而非整个订单的总和。

解决方案

方法1:分步分组汇总

先按order+type分组计算total_by_order_type,再保留order分组计算订单总和:

df %>%
  group_by(order, type) %>%
  summarize(total_by_order_type = n(), .groups = "drop_last") %>%
  mutate(total_by_order = sum(total_by_order_type)) %>%
  ungroup() %>%
  view()

方法2:使用窗口函数(dplyr 1.1.0+)

直接在summarize中通过.by参数指定订单级别的求和,无需额外分组:

df %>%
  group_by(order, type) %>%
  summarize(
    total_by_order_type = n(),
    total_by_order = sum(n(), .by = order)
  ) %>%
  ungroup() %>%
  view()

正确输出结果

ordertypetotal_by_order_typetotal_by_order
1A512
1B712
2A22
3A1016
3B616

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 18:33:15