自动分割数据框

时间:2015-05-18 18:48:03

标签: r split

我在R中有以下数据框:

> head(df)
    date x y z n  t
1 2012-01-01 1 1 1 0 52
2 2012-01-01 1 1 2 0 52
3 2012-01-01 1 1 3 0 52
4 2012-01-01 1 1 4 0 52
5 2012-01-01 1 1 5 0 52
6 2012-01-01 1 1 6 0 52
> str(df)
'data.frame':   4617600 obs. of  6 variables:
 $ date: Date, format: "2012-01-01" "2012-01-01" "2012-01-01" "2012-01-01" ...
 $ x   : Factor w/ 45 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ y   : Factor w/ 20 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ z   : Factor w/ 111 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ n   : int  0 0 0 0 0 0 0 0 29 0 ...
 $ t   : num  52 52 52 52 52 52 52 52 52 52 ...

我想要做的是将这个大df拆分成更小的数据帧,如下所示: 1)我希望每个因子值'x'有45个数据帧。 2)我想为每个因子值'z'进一步分割这45个数据帧。所以我想要总共45 * 111 = 4995个数据帧。

我在网上看到很多关于拆分数据框的内容,这些数据框将它们变成了列表。但是,我没有看到如何进一步拆分列表。我的另一个问题是计算机内存。如果我将数据框拆分成列表,它是否仍会占用尽可能多的计算机内存?如果我想在分割数据上运行一些预测模型,那么似乎无法做到。理想情况下,我会将数据分成许多数据帧,在第一个分割数据帧上运行预测模型,获得我需要的结果,然后在继续下一个之前将其删除。

1 个答案:

答案 0 :(得分:1)

这就是我要做的。您的数据已经适合内存,因此请将其保留为一个部分:

require(data.table)
setDT(df)

df[,{
  sum(t*n) # or whatever you're doing for "prediction models"
},by=list(x,z)]