从大型data.frame写入多个excel/csv文件
我有一个超过500000行的大数据帧。我希望将其导出到具有特定行限制(例如100000行)的多个excel/csv文件中 我的解决办法是:从大型data.frame写入多个excel/csv文件,r,excel,csv,xlsx,xlsxwriter,R,Excel,Csv,Xlsx,Xlsxwriter,我有一个超过500000行的大数据帧。我希望将其导出到具有特定行限制(例如100000行)的多个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(
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")
有什么优雅的方法吗?
谢谢你可以试试
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")
)
中断
上面将创建文件\u name1.xlsx、文件\u name2.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'))
}