作为标题,我有一个包含大约13000行和255列的数据集(实际上我有超过255列但RODBC
包似乎限制了导出到255的列数,因此我稍微修剪了一下)需要导出到xls / xlsx文件。
我尝试了RODBC
和xlsx
包,两者都需要超过5分钟才能导出。我想知道是否还有其他更有效的方法呢?
我知道一点python(使用python连接到outlook以便在邮箱中列出电子邮件),如果有使用python导出的方式,也欢迎使用。
相当多的建议使用csv,在我的情况下可能不太可能,因为有一个包含自由文本的字段,我无法控制在该字段中输入的字符类型,难以选择分隔符。
感谢您的建议,但我发现R包只有在数据帧相对较小的情况下才能正常运行,并且对于所有列都是字符的数据帧来说,它甚至都很慢。有什么建议吗?
答案 0 :(得分:5)
有很多选择:
xlsx
与多张表格一起使用(您已经尝试了这个,而且它太慢了,我知道)write.csv
应该更快,并且Excel可以读取odbcConnectExcel2007
RODBC
bigmemory
来帮助您管理大型数据框,尤其是如果您可以将其设置为稀疏矩阵XLConnect
适用于this guy同样的问题RODBC
或RPostgreSQL
等将其写入SQL数据库,然后在Excel中建立与DB的连接。我做了很多。这是related resource。Pandas
tab-delimited
文本文件,然后将其导入Excel:write.table (table,sep="\t",quote=FALSE,row.names=FALSE,file=file.name)
fread
RExcel
XLLoop
最后,这里有a nice little article关于"百万种方式连接R和Excel"虽然我认为我实际上给了你比文章更多的选择,但你可能觉得它很有用。
我会从最简单的解决方案开始,例如fread
,然后如果您仍然无法获得所需的结果,那么就可以使用相对更复杂的解决方案。
根据项目的确切性质,您甚至可以从并行或多核处理中受益。在大多数情况下,这些都不会提高您的I / O速度,但它可以加快您的过程中发生的数据处理/转换速度,从而使您的整体数据管道更快。
Python
也能很好地处理这个问题,但R
内有很多解决方案,希望你不需要求助于切换语言来写出数据。不过,你可以试试
XlsxWriter
处于常量内存模式或 openpyxl
包
如果您想尝试基于Python的解决方案。
答案 1 :(得分:-2)
尝试使用openxlsx包非常快。
https://cran.r-project.org/web/packages/openxlsx/openxlsx.pdf
write.xlsx()
或writeData()
命令写入xlsx文件使用openxlsx库的基本操作的一个小例子 取自openxlsx文档
`## setup a workbook with 3 worksheets
wb <- createWorkbook()
addWorksheet(wb = wb, sheetName = "Sheet 1", gridLines = FALSE)
writeDataTable(wb = wb, sheet = 1, x = iris)
addWorksheet(wb = wb, sheetName = "mtcars (Sheet 2)", gridLines = FALSE)
writeData(wb = wb, sheet = 2, x = mtcars)
addWorksheet(wb = wb, sheetName = "Sheet 3", gridLines = FALSE)
writeData(wb = wb, sheet = 3, x = Formaldehyde)
worksheetOrder(wb)
names(wb)
worksheetOrder(wb) <- c(1,3,2) # switch position of sheets 2 & 3
writeData(wb, 2, 'This is still the "mtcars" worksheet', startCol = 15)
worksheetOrder(wb)
names(wb) ## ordering within workbook is not changed
saveWorkbook(wb, "worksheetOrderExample.xlsx", overwrite = TRUE)
worksheetOrder(wb) <- c(3,2,1)
saveWorkbook(wb, "worksheetOrderExample2.xlsx", overwrite = TRUE)`
加尼