2
我使用data.table來重塑我的數據。但是,更新data.table包後,我的代碼不再工作。使用data.table基於Date對象重塑數據
我基本上想擴展我的數據集基於兩列(start.date
和stop.date
)。
請參考下面的玩具例子:
# Set up toy data
id <- letters[1:3]
start.date <- as.Date(c("2012-01-01", "2012-01-03", "2012-01-05"))
stop.date <- as.Date(c("2012-01-03", "2012-01-06", "2012-01-06"))
d <- data.table(id, start.date, stop.date)
# This is how the input data looks like
# id start.date stop.date
# 1: a 2012-01-01 2012-01-03
# 2: b 2012-01-03 2012-01-06
# 3: c 2012-01-05 2012-01-06
# Working code with older version of data.table.
d.new <- d[, c(.SD, list(time=seq(start.date, stop.date, by="days"))), by=id]
# The result looks like that:
# id start.date stop.date V3
# 1: a 2012-01-01 2012-01-03 2012-01-01,2012-01-02,2012-01-03
# 2: b 2012-01-03 2012-01-06 2012-01-03,2012-01-04,2012-01-05,2012-01-06
# 3: c 2012-01-05 2012-01-06 2012-01-05,2012-01-06
這是最後的數據應該怎麼樣子(並沒有像更新data.table包之前)
# id start.date stop.date time
# 1: a 2012-01-01 2012-01-03 2012-01-01
# 2: a 2012-01-01 2012-01-03 2012-01-02
# 3: a 2012-01-01 2012-01-03 2012-01-03
# 4: b 2012-01-03 2012-01-06 2012-01-03
# 5: b 2012-01-03 2012-01-06 2012-01-04
# 6: b 2012-01-03 2012-01-06 2012-01-05
# 7: b 2012-01-03 2012-01-06 2012-01-06
# 8: c 2012-01-05 2012-01-06 2012-01-05
# 9: c 2012-01-05 2012-01-06 2012-01-06
我不知道這是如何執行的速度。我在上面使用的命令在數百萬觀察值上進行了測試。 – majom 2014-10-07 15:53:35
對於你目前獲得的結果,「unlist」如何? – A5C1D2H2I1M1N2O1R2T1 2014-10-07 15:57:00