我正在尝试总结包含日期(或时间)信息的 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
这样做,因为我的数据集非常庞大且性能很重要 . 可能吗?
1 回答
自版本1.9.8(在CRAN 2016年11月25日),
data.table
提供非equi连接:Edit: 加入和聚合可以一步完成:
结果与上述相同 .
数据
OP提供了两个数据集,分别为6行和7行 . 这里使用了7行的数据集,因为它是作为预期结果发布的: