15
我有一个由400,000行和大约50列组成的数据帧。由于这个数据帧非常大,因此处理计算量过大。 我想将这个数据框拆分成更小的数据框,之后我将运行我想运行的函数,然后在最后重新组合数据框。按行数拆分数据帧
没有我想用来分割这个数据框的分组变量。我只想按行数分割它。例如,我想将这个400'000行表分成400个1'000行的数据框。 我该怎么做?
我有一个由400,000行和大约50列组成的数据帧。由于这个数据帧非常大,因此处理计算量过大。 我想将这个数据框拆分成更小的数据框,之后我将运行我想运行的函数,然后在最后重新组合数据框。按行数拆分数据帧
没有我想用来分割这个数据框的分组变量。我只想按行数分割它。例如,我想将这个400'000行表分成400个1'000行的数据框。 我该怎么做?
制作您自己的分组变量。
d <- split(my_data_frame,rep(1:400,each=1000))
你也应该考虑从plyr
包ddply
功能,或者从dplyr
的group_by()
功能。
编辑为简洁起见,后哈德利的意见。
如果你不知道有多少行是在数据帧,或者如果数据帧可能是一个长度不等你想要的块大小,你可以做
chunk <- 1000
n <- nrow(my_data_frame)
r <- rep(1:ceiling(n/chunk),each=chunk)[1:n]
d <- split(my_data_frame,r)
您也可以使用
根据该dplyr
和
data.table
包
r <- ggplot2::cut_width(1:n,chunk,boundary=0)
对于未来的读者,方法可能会是(多)对数据帧进行集体为单位的运算速度更快。
谢谢!这很好用!是的,我会研究plyr软件包,因为它看起来非常有用。 – Pascal
你为什么使用'split.data.frame'而不是'split'?你不需要强迫分组变量成为一个因子。 – hadley
不确定这些强制/方法调度是否可行,并且懒得花时间去测试。谢谢。 –