【发布时间】:2014-10-07 15:42:35
【问题描述】:
我使用 data.table 大量重塑我的数据。但是,更新 data.table 包后,我的代码不再工作。
我基本上想基于两列(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
【问题讨论】:
-
我不知道这在速度方面的表现如何。我上面使用的命令已经过数百万次观察测试。
-
unlist你目前得到的结果怎么样?
标签: r data.table reshape