Bru*_*x13 6 macos excel xls r readxl
我有多个 .xls (~100MB) 文件,我想从中将多个工作表(从每个工作表)作为数据帧加载到 R 中。我尝试了各种函数,例如xlsx::xlsx2and XLConnect::readWorksheetFromFile,它们总是运行很长时间(> 15 分钟)并且永远不会完成,我必须强制退出 RStudio 才能继续工作。
我也试过gdata::read.xls,它确实完成了,但每张纸需要超过 3 分钟,而且它不能像XLConnect::loadWorkbookcan一样一次提取多张纸(这对加快我的管道非常有帮助)。
执行这些函数所需的时间(我什至不确定如果让它们运行更长时间,前两个函数是否会完成)对于我的管道来说太长了,我需要同时处理许多文件。有没有办法让这些更快地完成/完成?
在几个地方,我看到了使用该功能的建议,该功能readxl::read_xls似乎被广泛推荐用于此任务,并且每张纸应该更快。然而,这个给了我一个错误:
> # Minimal reproducible example:
> setwd("/Users/USER/Desktop")
> library(readxl)
> data <- read_xls(path="test_file.xls")
Error:
filepath: /Users/USER/Desktop/test_file.xls
libxls error: Unable to open file
Run Code Online (Sandbox Code Playgroud)
我还进行了一些基本测试,以确保文件存在且格式正确:
> # Testing existence & format of the file
> file.exists("test_file.xls")
[1] TRUE
> format_from_ext("test_file.xls")
[1] "xls"
> format_from_signature("test_file.xls")
[1] "xls"
Run Code Online (Sandbox Code Playgroud)
在test_file.xls上面使用的是可在这里。在使第一个功能运行得更快或read_xls根本运行方面的任何建议将不胜感激- 谢谢!
这似乎有些用户能够打开上面使用的文件readxl::read_xls的功能,而其他人都没有,无论是在Mac和Windows,使用最先进的最新版本R,Rstudio以及readxl。该问题已发布在 readxl GitHub 上,尚未解决。
我下载了您的数据集并以这种方式读取了每个 Excel 表(例如,对于“整体”和“区域”表):
install.packages("readxl")
library(readxl)
library(data.table)
dt_overall <- as.data.table(read_excel("test_file.xls", sheet = "Overall"))
area_sheet <- as.data.table(read_excel("test_file.xls", sheet = "Area"))
Run Code Online (Sandbox Code Playgroud)
最后,我得到这样的 dt(例如,只有“区域”表的数据集的一部分):
同样,您可以改用该read_xls函数read_excel。
我检查了一下,它也可以正常工作,甚至更快一点,因为它read_excel是一个包装器read_xls和包中的read_xlsx功能readxl。
此外,您可以使用包中的excel_sheets函数readxl来读取 Excel 文件的所有工作表。
更新
使用microbenchmarkpackage 对以下包/函数进行基准测试:gdata::read.xls,XLConnect::readWorksheetFromFile和readxl::read_excel.
但XLConnect它是基于 Java 的解决方案,因此需要大量 RAM。
| 归档时间: |
|
| 查看次数: |
5832 次 |
| 最近记录: |