假设对数百万个单独的 id 有一个date.frame
ordata.table
的观察,所以一个子集看起来像这样:
id <- c(3,3,3,5,5)
data <- c(24,48,60,84,96)
start <- as.Date(c("2006-01-01","2009-12-09","2010-01-02","2006-04-24", "2009-12-09"))
df <- data.frame(id,data,start) ; head(df)
id data start
1 3 24 2006-01-01
2 3 48 2009-12-09
3 3 60 2010-01-02
4 5 84 2006-04-24
5 5 96 2009-12-09
我们希望为系列中的所有其他协变量创建一个结束日期,以便周期 t 的结束日期是周期 t+1 的开始日期减去一天。问题是 1)这需要通过 ID 完成,2)当没有 + 1 时,记录会得到一个正在进行的标记,例如“9999-12-31”。产品看起来像这样:
df$end <- as.Date(c("2009-12-08","2010-01-01","9999-12-31","2009-12-08",
"9999-12-31"));head(df)
id data start end
1 3 24 2006-01-01 2009-12-08
2 3 48 2009-12-09 2010-01-01
3 3 60 2010-01-02 9999-12-31
4 5 84 2006-04-24 2009-12-08
5 5 96 2009-12-09 9999-12-31