2011-08-14 110 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

不確定這些強制/方法調度是否可行,並且懶得花時間去測試。謝謝。 –