我有一个事件的数据框架,并试图将第一个事件的非重叠120天内的所有事件分组.因此,使用以下示例数据:
library(tidyverse)
df = tibble(
event = c(1, 2, 3, 4, 5, 6),
date = as.Date(c("1992-01-03", "1992-09-07", "1992-11-26", "1993-01-29", "1993-02-18", "1993-04-02")),
duration = c(4, 23, 60, 18, 30, 5)
)
df = df |>
mutate(period_end = date + 120)
df
# A tibble: 5 x 4
event date duration period_end
<dbl> <date> <dbl> <date>
1 1 1992-01-03 4 1992-05-02
2 2 1992-09-07 23 1993-01-05
3 3 1992-11-26 60 1993-03-26
4 4 1993-01-29 18 1993-05-29
5 5 1993-02-18 30 1993-06-18
6 6 1993-04-02 5 1993-07-31
我需要创建的组,包括在120天内开始彼此的事件. 因此,在本例中,我将拥有事件A:[1]、B:[2,3]和C:[4,5,6]的组. 所以B组从1992-9-7开始,1993-1-5结束,事件4不在这个窗口内,即使它在事件3的2个月内开始,但它超过了组的结束日期.C组将从事件4开始,一直持续到"1993-5-29"
我可以用date < lag(period_end)
来测试每个事件是否在前一个事件的窗口内,但这会测试每个事件与之前的时间段.我如何创建基于组中第一个事件的组,以便更远地查看关闭的组?