【问题标题】:Event dif_time fixing last date occurrence事件 diff_time 修复最后日期发生
【发布时间】:2014-05-06 01:42:33
【问题描述】:

我有一些由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 之间的差异时间(以天为单位)。 约束是:

对于event (id,var1,var2),我需要找到 last.date1 并计算:

dif_time(days) = date2 - last.date1,针对每个事件并报告该事件的结果。

我没有找到修复 last.date1 的方法,因此非常感谢您的帮助。

【问题讨论】:

  • Binaya,非常感谢您的编辑

标签: r date events multivariate-partition


【解决方案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

【讨论】:

  • 有趣,您是否将drop=TRUE 传递给ave,然后再将其传递给split?不知道这实际上是如何发生的。
  • @thelatemail 实际上,drop=T 被传递给interaction()。没有它,您会收到不存在组合的警告。
  • 啊哈 - 我明白了,因为 ave 调用是 ave(x,...,FUN=) 并且函数内部有 interaction(...),所以 drop=TRUE... 中被拾取并传递。不错。
  • @MrFlick 非常感谢您的解决方案,非常适合我的需求。
猜你喜欢
  • 1970-01-01
  • 2015-11-13
  • 2015-05-15
  • 1970-01-01
  • 1970-01-01
  • 2016-01-20
  • 2020-05-12
  • 2019-02-26
  • 2011-11-25
相关资源
最近更新 更多