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

时间:2016-02-05 02:30:33

标签: r excel csv xlsx xlsxwriter

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

我的解决方案是:

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

有没有优雅的方法呢? 感谢

2 个答案:

答案 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,...

的内容

答案 1 :(得分: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,....等。