在R中提高Excel的上传速度

siotufzp  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(93)

我有一个代码,下载csv文件,并上传到Excel工作簿。
现在,每个csv文件是60MB+,所以上传过程相当慢。我想知道我如何改善这个过程(通过使用另一个库或代码片段,无论是工作)。这里是一个虚拟代码(我也想知道我是否可以改善代码本身,因为它是相当重复的):

library(openxlsx)
library(data.table)

wb<-loadWorkbook("Output.xlsx")
jun18<-fread("June18.csv")
writeData(wb,sheet="Jun18",jun18)
may18<-fread("May18.csv")
writeData(wb,sheet="May18",may18)
apr18<-fread("Apr18.csv")
writeData(wb,sheet="Apr18",apr18)
mar18<-fread("Mar18.csv")
writeData(wb,sheet="Mar18",mar18)
feb18<-fread("Feb18.csv")
writeData(wb,sheet="Feb18",feb18)
jan18<-fread("Jan18.csv")
writeData(wb,sheet="Jan18",jan18)
dec17<-fread("Dec17.csv")
writeData(wb,sheet="Dec17",dec17)
nov17<-fread("Nov17.csv")
writeData(wb,sheet="Nov17",nov17)
oct17<-fread("Oct17.csv")
writeData(wb,sheet="Oct17",oct17)
sep17<-fread("Sep17.csv")
writeData(wb,sheet="Sep17",sep17)
aug17<-fread("Aug17.csv")
writeData(wb,sheet="Aug17",aug17)
jul17<-fread("Jul17.csv")
writeData(wb,sheet="Jul17",jul17)
jun17<-fread("Jun17.csv")
writeData(wb,sheet="Jun17",jun17)
#It took 7 min to get to this point
saveWorkbook(wb,"Output.xlsx",overwrite=TRUE)
#It took another 21 min to get to the end
1cklez4t

1cklez4t1#

您可以使用以下方法增加线程数。

fread("June18.csv", nThread = 10)

此外,您可以将csv文件的阅读和Excel文件的写入分开。也许您可以考虑并行写入Excel工作表以提高写入速度:使用并行处理将包含数据框的列表写入excel文件
总而言之,您可以1)增加nThread以提高阅读速度2)一旦所有CSV文件都加载到内存中,就在Excel文件中并行写入data.frame。

相关问题