我有一些这样的数据:
sample.data <- rbind(data.table(start.date=seq(from=as.Date("2010-01-01"), to=as.Date("2014-12-01"), by="quarter"),
Group=c("A","B","C","D"), rnorm(20, 5)),
data.table(start.date=seq(from=as.Date("2010-01-01"), to=as.Date("2014-12-01"), by="quarter"),
Group=c("A","B","C","D"), rnorm(20, 3))
)
我想创建一个end.date
等于下一个最早的列start.date
每个组的值。
所以,举个例子,第一个start.date
for Group==A
is 2010-01-01
。下一个最早的start.date
for Group==A
is 2011-01-01
。所以最后的结果应该是这样排序的Group
:
start.date Group end.date
2010-01-01 A 2011-01-01
2010-01-01 A 2011-01-01
2011-01-01 A 2012-01-01
2011-01-01 A 2012-01-01
2012-01-01 A 2013-01-01
2012-01-01 A 2013-01-01
2013-01-01 A 2014-01-01
2013-01-01 A 2014-01-01
2014-01-01 A NA
2014-01-01 A NA
2010-04-01 B 2011-04-01
2010-04-01 B 2011-04-01
2011-04-01 B 2012-04-01
2011-04-01 B 2012-04-01
等等。理想情况下,我想通过参考来做到这一点,例如
sample.data[, end.date := EXPRESSION]
但我不知道从哪里开始。谢谢你的帮助。