【发布时间】:2016-06-03 23:28:29
【问题描述】:
我正在尝试总结一个包含日期(或时间)信息的data.frame。
让我们假设这个包含患者的住院记录:
df <- data.frame(c(1, 2, 1, 1, 2, 2),
c(as.Date("2013/10/15"), as.Date("2014/10/15"), as.Date("2015/7/16"), as.Date("2016/1/7"), as.Date("2015/12/20"), as.Date("2015/12/25")))
names(df) <- c("patient.id", "hospitalization.date")
df 看起来像这样:
> df
patient.id hospitalization.date
1 1 2013-10-15
2 2 2014-10-15
3 1 2015-07-16
4 1 2016-01-07
5 2 2015-12-20
6 2 2015-12-25
对于每次观察,我需要计算住院前 365 天内发生的住院次数。
在我的示例中,它将是新的 df$hospitalizations.last.year 列。
> df
patient.id hospitalization.date hospitalizations.last.year
1 1 2013-10-15 1
2 2 2014-10-15 1
3 1 2015-07-16 1
4 2 2015-12-20 1
5 2 2015-12-25 2
6 1 2016-01-07 2
7 2 2016-02-10 3
请注意,计数器包括过去 365 天的先前记录数,而不仅仅是今年。
我正在尝试使用dplyr 或data.table 来做到这一点,因为我的数据集非常庞大并且性能很重要。 ¿ 有可能吗?
【问题讨论】:
-
按照这个逻辑,第三次观察不应该也算作“去年住院”吗?
-
我正在尝试根据每个患者计算第三列
hospitalizations.last.year。所以对于第六排,患者 2 在 2014 年 12 月 25 日之后住院 2 次,2015 年 12 月 25 日和 2015 年 12 月 20 日住院一次。 2014 年 10 月 15 日的另一个在 365 天窗口之外。 -
我还不清楚,抱歉。只是为了检查:对于每次观察,您要计算在那个住院之前的 365 天内发生的住院次数。 (感谢@docendodiscimus)
-
是的,你明白了。那是我的问题。谢谢。
-
似乎是一个标准的滚动连接问题,但你的最后一列对我来说毫无意义。为什么是例如当前住院日期不计入第一行,但计入最后一行..?
标签: r data.table time-series dplyr