事件dif_time修复上次发生日期

时间:2014-05-06 01:42:33

标签: r date events multivariate-partition

我有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的方法,所以感谢您的帮助。

1 个答案:

答案 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