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

如何在R中通过持续时长计算时间连续分组事件的起止时间

计算分组事件起始时间的方法

你自己想到的解法完全符合需求,逻辑通顺:每个分组内的Endtime是截止到当前行的持续时长累加值,用Endtime减去当前行的dur,刚好得到当前行事件的起始时间,分组内第一个事件计算后刚好得到起始值0,完全满足「每个分组起始时间从0开始」的规则。

完整运行代码如下:

library(dplyr)
df <- data.frame(
  grp = c("A", "B", "A", "C", "C", "A", "B", "A"),
  dur = c(111,222,33,10,555,333,600,222)
)
df %>%
  group_by(grp) %>%
  mutate(
    Endtime = cumsum(dur),
    Starttime = Endtime - dur
  )

运行后输出结果:

# A tibble: 8 × 4
# Groups:   grp [3]
  grp     dur Endtime Starttime
  <chr> <dbl>   <dbl>     <dbl>
1 A       111     111         0
2 B       222     222         0
3 A        33     144       111
4 C        10      10         0
5 C       555     565        10
6 A       333     477       144
7 B       600     822       222
8 A       222     699       477

如果想要更直观的逻辑,也可以用lag()函数取上一行的Endtime作为当前行的起始时间,两种写法等价:

df %>%
  group_by(grp) %>%
  mutate(
    Endtime = cumsum(dur),
    Starttime = lag(Endtime, default = 0)
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 03:30:03