首页 > 解决方案 > R - 使用多种事件类型和 ID 计算自上次事件以来经过的时间

问题描述

之前也有人问过类似的问题,问题是如何计算事件发生后的观察次数。我还有一个要求。如何计算自同一类型观察以来的天数,以及查找自任何其他类型事件以来的天数。我也有身份证。

为了说明,请参见下文。我正在尝试使用 Datatables 在 R 中执行此操作,但收效甚微。

是)我有的:

  date     event  id
2000-07-06     2  1
2000-07-07     1  1
2000-07-09     0  1
2000-07-10     0  1
2000-07-15     2  1
2000-07-16     1  1
2000-07-20     0  1
2000-07-21     1  1
2000-07-06     1  2
2000-07-07     2  2
2000-07-15     0  2
2000-07-16     0  2
2000-07-17     2  2
2000-07-18     1  2

我想要的如下:

  date     event  id days_since_event_1 days_since_event_2
2000-07-06     2  1        NA                 NA
2000-07-07     1  1        NA                 1
2000-07-09     0  1        2                  3
2000-07-10     0  1        3                  4
2000-07-15     2  1        8                  9
2000-07-16     1  1        9                  1
2000-07-20     0  1        4                  5
2000-07-21     1  1        5                  6
2000-07-06     1  2        NA                 NA
2000-07-07     2  2        1                  NA
2000-07-15     0  2        9                  8
2000-07-16     0  2        10                 9
2000-07-17     2  2        11                 10
2000-07-18     1  2        12                 1

这两个事件是相互排斥的,即它们不能在同一天发生。希望听到一些好的建议。祝一切顺利。

标签: rloopsdatatables

解决方案


您可以使用特定的事件编码对所有人的日期进行子集化,例如:

date.2 = DATAFRAME[which(DATAFRAME[,2]==2),1]

然后就做

DATAFRAME[which(DATAFRAME[,2]==2),5] = as.numeric(diff.Date(date.2))

等等。可能这更容易做到,但这是我想到的第一件事。DATAFRAME 只是您的数据框的名称。

编辑:如果我没看错,你想要在 ID 和事件列彼此不同的地方使用 NA?然后你可以继续: DATAFRAME[which(DATAFRAME[,2] != DATAFRAME[,3]),c(4,5)] = NA 或类似的东西


推荐阅读