数据表有效回收V2

问题描述 投票:0回答:1

这是此问题的后续内容:data.table efficient recycling

这里的区别是每行的未来年份不一定相同。.

例如,当我需要对未来几年进行预测时,我经常在data.table中使用回收。每年以后我都会重复原始数据。

这可能会导致类似的结果:

library(data.table)
dt <- data.table(cbind(1:500000, 500000:1, rep(rpois(500000, 240))))
dt2 <- dt[, c(.SD, .(year = 1:V3)), by = 1:nrow(dt) ]

但是我经常不得不处理数百万行,并且比这个玩具示例中的列要多得多。时间增加了..试试这个:

library(data.table)
dt <- data.table(cbind(1:5000000, 5000000:1, rep(rpois(5000000, 240))))
dt2 <- dt[, c(.SD, .(year = 1:V3)), by = 1:nrow(dt) ]

我的问题是:有没有更有效的方法来实现这一目的?

感谢您的帮助!

r data.table recycle
1个回答
0
投票

这是一个较快的实现,但是由于lapply中的data.table循环而仍然很长

years <- rpois(5000000, 240)
dt3 <- data.table(
  rep(1:5000000, years),
  rep(5000000:1, years),
  rep(years, years),
  unlist(lapply(years, function(year){1:year}))
)

我希望这对您有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.