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

R语言按startdate日期列分组计算event字段累计求和的问题

错误原因

你之前的代码问题出在分组后直接计算累计值,cumsum()的作用范围被限制在每个日期分组内部,所以得到的是单天内的逐行累计,不是跨日期的总累计。

修正后的dplyr代码

library(dplyr)

my_data_2 <- my_data %>%
  # 按日期分组,先计算单日event总和
  group_by(startdate) %>%
  summarise(daily_event = sum(event)) %>%
  # 取消分组,对所有单日总和做全局累计求和
  ungroup() %>%
  mutate(event = cumsum(daily_event)) %>%
  # 保留需要的字段
  select(startdate, event)

逻辑说明

  1. 第一步group_by(startdate) %>% summarise(daily_event = sum(event))会先统计每个日期的event总计数,运行到这一步会得到中间结果:
    startdate daily_event
    1 2010-01-01           3
    2 2010-01-02           1
    3 2010-01-03           2
    
  2. 第二步ungroup() %>% mutate(event = cumsum(daily_event))会对上面的daily_event列做全局累计求和,最终得到你需要的输出结果,和你的预期完全一致:
    startdate event
    1 2010-01-01     3
    2 2010-01-02     4
    3 2010-01-03     6
    

注:startdate为POSIXct类型也不需要额外处理,分组逻辑会自动按时间精度匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:09:03