2011-08-14 83 views
15

我有一个由400,000行和大约50列组成的数据帧。由于这个数据帧非常大,因此处理计算量过大。 我想将这个数据框拆分成更小的数据框,之后我将运行我想运行的函数,然后在最后重新组合数据框。按行数拆分数据帧

没有我想用来分割这个数据框的分组变量。我只想按行数分割它。例如,我想将这个400'000行表分成400个1'000行的数据框。 我该怎么做?

回答

20

制作您自己的分组变量。

d <- split(my_data_frame,rep(1:400,each=1000)) 

你也应该考虑从plyrddply功能,或者从dplyrgroup_by()功能。

编辑为简洁起见,后哈德利的意见。

如果你不知道有多少行是在数据帧,或者如果数据帧可能是一个长度不等你想要的块大小,你可以做

chunk <- 1000 
n <- nrow(my_data_frame) 
r <- rep(1:ceiling(n/chunk),each=chunk)[1:n] 
d <- split(my_data_frame,r) 

您也可以使用

根据该 dplyrdata.table
r <- ggplot2::cut_width(1:n,chunk,boundary=0) 

对于未来的读者,方法可能会是(多)对数据帧进行集体为单位的运算速度更快。

+0

谢谢!这很好用!是的,我会研究plyr软件包,因为它看起来非常有用。 – Pascal

+0

你为什么使用'split.data.frame'而不是'split'?你不需要强迫分组变量成为一个因子。 – hadley

+0

不确定这些强制/方法调度是否可行,并且懒得花时间去测试。谢谢。 –