我有id, var1, var2 and date
确定的一些事件。
dif_time的所需输出如下:
id var1 var2 date1 date2 dif_time
1 120 1 2014-06-03 2014-06-30 26
1 120 1 2014-06-04 2014-06-30 26
1 120 4 2014-06-05 2014-06-30 25
2 220 1 2014-06-05 2014-06-30 23
2 220 1 2014-06-07 2014-06-30 23
3 120 2 2014-06-10 2014-06-30 15
3 120 2 2014-06-12 2014-06-30 15
3 120 1 2014-06-15 2014-06-30 15
5 220 3 2014-06-20 2014-06-30 10
我需要计算date1(事件日期)和控制日期date2之间的dif_time。 约束是:
对于event (id,var1,var2)
,我需要找到last.date1并计算:
dif_time(days) = date2 - last.date1
,针对每个事件报告事件的结果。
我找不到修复last.date1
的方法,所以感谢您的帮助。
答案 0 :(得分:1)
你可以这样做
dd<-data.frame(
id = c(1L, 1L, 1L, 2L, 2L, 3L, 3L, 3L, 5L),
var1 = c(120L, 120L, 120L, 220L, 220L, 120L, 120L, 120L, 220L),
var2 = c(1L, 1L, 4L, 1L, 1L, 2L, 2L, 1L, 3L),
date1 = structure(c(16224, 16225, 16226, 16226, 16228, 16231, 16233, 16236, 16241), class = "Date"),
date2 = structure(c(16251, 16251, 16251, 16251, 16251, 16251, 16251, 16251, 16251), class = "Date")
)
last.date1<-with(dd, ave(date1, id, var1, var2, FUN=max, drop=T))
dd$date2-last.date1
dd$diff_time <- dd$date2-last.date1