Мой вопрос заключается в том, как рассчитать количество дней с момента последнего события, произошедшего в R. Ниже приведен минимальный пример данных:
df <- data.frame(date=as.Date(c("06/07/2000","15/09/2000","15/10/2000","03/01/2001","17/03/2001","23/05/2001","26/08/2001"), "%d/%m/%Y"),
event=c(0,0,1,0,1,1,0))
date event
1 2000-07-06 0
2 2000-09-15 0
3 2000-10-15 1
4 2001-01-03 0
5 2001-03-17 1
6 2001-05-23 1
7 2001-08-26 0
Двоичная переменная (событие) имеет значения 1, указывающие, что произошло событие, и 0 в противном случае. Повторные наблюдения выполняются в разное время (date
)
Ожидаемый результат следующий с днями после последнего события (tae
):
date event tae
1 2000-07-06 0 NA
2 2000-09-15 0 NA
3 2000-10-15 1 0
4 2001-01-03 0 80
5 2001-03-17 1 153
6 2001-05-23 1 67
7 2001-08-26 0 95
Я искал ответы на подобные проблемы, но они не затрагивают мою конкретную проблему. Я попытался реализовать идеи из из аналогичного сообщения (Рассчитать прошедшее время с момента последнего события), а ниже - ближайший я добрались до решения:
library(dplyr)
df %>%
mutate(tmp_a = c(0, diff(date)) * !event,
tae = cumsum(tmp_a))
Что дает результат, показанный ниже, который не совсем ожидаемый:
date event tmp_a tae
1 2000-07-06 0 0 0
2 2000-09-15 0 71 71
3 2000-10-15 1 0 71
4 2001-01-03 0 80 151
5 2001-03-17 1 0 151
6 2001-05-23 1 0 151
7 2001-08-26 0 95 246
Приветствуется всякая помощь в том, как правильно настроить этот или другой подход.