【发布时间】:2015-08-04 03:50:06
【问题描述】:
我的问题涉及如何计算自 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
我已经四处寻找类似问题的答案,但它们并没有解决我的具体问题。我试图从 来自类似的帖子 (Calculate elapsed time since last event),以下是最接近的我 找到解决方案:
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
非常感谢任何有关如何微调此方法或其他方法的帮助。
【问题讨论】:
-
@Pascal 如果这样更容易,可以将前三个条目的
tae设置为0而不是NA。 -
@Pascal
as.Date('2001-01-03')-as.Date('2000-10-15') Time difference of 80 days。这是没有。自2000-10-15上发生的上一个事件以来的天数。有意义吗?
标签: r time-series