我有一个大的合同日期表。在我的决赛桌上,我希望每个月都有一个合同活动的单一行。问题是我目前解决方案的速度。有没有更快的方法来实现这一目标? (我有超过1点百万ID的不同合约的运行时间,它需要几分钟的时间,我怀疑cbind?!)。加速日期转换data.table方式
library(data.table)
dt <- data.table(id=c(123, 345),
start=c(as.IDate("2013-01-01"), as.IDate("2012-01-01")),
end=c(as.IDate("2013-04-01"),as.IDate("2012-02-01")))
dt[, cbind(.SD, seq(start, end, by="month")), by=id]
id start end V2
1: 123 2013-01-01 2013-04-01 2013-01-01
2: 123 2013-01-01 2013-04-01 2013-02-01
3: 123 2013-01-01 2013-04-01 2013-03-01
4: 123 2013-01-01 2013-04-01 2013-04-01
5: 345 2012-01-01 2012-02-01 2012-01-01
6: 345 2012-01-01 2012-02-01 2012-02-01
您是否尝试过使用'dt [,seq(start,end,by =“month”),by = id]'生成月份,然后将它与原始数据结合? – ilir 2014-09-26 09:58:28