我有一個大的合同日期表。在我的決賽桌上,我希望每個月都有一個合同活動的單一行。問題是我目前解決方案的速度。有沒有更快的方法來實現這一目標? (我有超過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