从R中的巨大数据框中提取/子集列表

时间:2018-03-13 10:22:34

标签: r data.table time-series subset

我有一张包含历史文章要求的大桌子。该列表大约有200万行,包含150,000种不同的文章。

Actuals<- data.frame(Articel=c("A","A","B","B","n","n"), Date=c("2018-1-01","2018-1-02","2018-1-01","2018-1-02","2018-1-01","2018-1-02"),
                Quantity=c(33,42,21,25,77,88))

Example Input Table Actuals

对于进一步处理,(ABC / XYZ-分析和预测),我需要在不同的列表中的每篇文章的时间序列。

Output Subsetting Lists

过去,我在for循环中使用了子集化函数来创建时间序列列表

#Build Time series
groups<-unique(Actuals$Article)
Actuals_ts<- list ()
for (i in 1:length(groups)){
    name<-paste(i,groups[i],sep=': ')
    Actuals_ts[[name]]<-subset(Actuals,Actuals$ident==groups[i])}

在这种情况下,使用150,000篇文章,这是不可行的。你能想到任何工作吗?提前谢谢。

修改 我也试过了分割功能:

`tic_start_split = Sys.time()
actuals_ts<-split(Actuals,with(Actuals,interaction(Actuals$ident)),drop = TRUE)
tic_end_split = Sys.time()

> tic_start_split
[1] "2018-03-13 12:59:20 CET"
> tic_end_split
[1] "2018-03-13 13:10:44 CET"`

结果是1.8TB的大型列表。

实际的拆分过程大约需要10分钟:

但之后R再将结果加载30分钟。有没有办法把它搞定?

0 个答案:

没有答案