2016-02-05 33 views
0

我有一个超过500,000行的大型数据框。我希望将其导出到具有特定行限制的多个excel/csv文件(例如100,000行)。从一个大的数据写入多个excel/csv文件。框架

我的解决办法是:

library(openxlsx) 
write.xlsx(df[1:100000,], "path") 
write.xlsx(df[100001:200000,], "path") 
write.xlsx(df[200001:300000,], "path") 
write.xlsx(df[300001:400000,], "path") 
write.xlsx(df[400001:500000,], "path") 

是否有任何优雅的方式来做到这一点? 感谢

+0

当你说优雅时,你的意思是“简洁”吗? –

+0

是的,我希望用一个函数将这个逻辑应用于非常大的数据集。 –

回答

6

你可以尝试像...

breaks <- split(1:nrow(df), ceiling(seq_along(1:nrow(df))/1e5)) 
lapply(breaks, 
    function(x)     
    write.xlsx(
      df[x,], 
      paste0("path",substr(x[1],1,1),".xlsx") 
) 

变化1E5改变的行数在每次休息包括。应该输出像path1.xlsxpath2.xlsx ...

3
batchSize=100; # number of rows in single output file 
filename="file_name"; # prefix of output file 

chunks=split(df, floor(0:(nrow(df)-1)/batchSize)) 
for (i in 1:length(chunks)) 
{ 
    write.xlsx(chunks[[i]],paste0(filename,i,'.xlsx')) 
} 

上面会在你的工作目录下创建file_name1.xlsx,file_name2.xlsx,...等。

相关问题