1.9.8 ( CRAN 25 2016 ), data.table equi-:
library(data.table)
setDT(df)[
, date_365 := hospitalization.date - 365][
df, on = c("patient.id", "hospitalization.date>=date_365",
"hospitalization.date<=hospitalization.date")][
, .(hospitalizations.last.year = .N),
by = .(patient.id, hospitalization.date = hospitalization.date.1)]
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
: :
setDT(df)[
, date_365 := hospitalization.date - 365][
df, on = c("patient.id", "hospitalization.date>=date_365",
"hospitalization.date<=hospitalization.date"),
.(hospitalizations.last.year = .N), by = .EACHI][
, hospitalization.date := NULL][]
, .
OP 6 7 , . 7 , :
df <- data.frame(
patient.id = c(1L, 2L, 1L, 1L, 2L, 2L, 2L),
hospitalization.date = as.Date(c("2013/10/15", "2014/10/15", "2015/7/16",
"2016/1/7", "2015/12/20", "2015/12/25", "2016/2/10")))
df <- df[order(df$hospitalization.date), ]