简体   繁体   English

从大型data.frame写入多个excel / csv文件

[英]Write multiple excel/csv files from a large data.frame

I have a large data frame of over 500,000 rows. 我有一个超过500,000行的大型数据框。 I wish to export it to multiple excel/csv files with a certain row limit (eg 100,000 rows). 我希望将其导出到具有一定行限制(例如100,000行)的多个excel / csv文件。

My solution is: 我的解决方案是:

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")

Is there any elegant way to do it? 有什么优雅的方法吗? Thanks 谢谢

You could try something like... 您可以尝试类似...

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")
)

Change 1e5 to change the number of rows to include in each break. 更改1e5以更改要包含在每个中断中的行数。 Should output something like path1.xlsx , path2.xlsx , ... 应该输出类似path1.xlsxpath2.xlsx ,...

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'))
}

Above will create file_name1.xlsx, file_name2.xlsx, .... etc. in your working directory. 上面将在您的工作目录中创建file_name1.xlsx,file_name2.xlsx等。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM