将多个包含多个工作表的 xlsx 文件读取到一个 R 数据框中

标签 r excel xlsx readxl openxlsx

我一直在阅读如何读取多个 xlsx 文件并将其合并到一个 R 数据框中,并遇到了一些非常好的建议,例如 How to read multiple xlsx file in R using loop with specific rows and columns ,但到目前为止不适合我的数据集。

我希望 R 读取多个包含多个工作表的 xlsx 文件。所有工作表和文件都具有相同的列,但长度不同,并且应排除 NA。我想跳过前 3 行,只获取第 1:6、8:10、12:17、19 列。

到目前为止我尝试过:

file.list <- list.files(recursive=T,pattern='*.xlsx')

dat = lapply(file.list, function(i){
    x = read.xlsx(i, sheetIndex=1, sheetName=NULL, startRow=4,
              endRow=NULL, as.data.frame=TRUE, header=F)
# Column select 
    x = x[, c(1:6,8:10,12:17,19)]
# Create column with file name  
    x$file = i
# Return data
    x
  })

  dat = do.call("rbind.data.frame", dat)

但这只需要每个文件的第一张纸

有谁知道如何将所有工作表和文件放在一个 R 数据框中?

此外,对于大量数据,您会推荐哪些软件包?到目前为止,我尝试了 readxl 和 XLConnect。

最佳答案

openxlsx解决方案:

filename <-"myFilePath"

sheets <- openxlsx::getSheetNames(filename)
SheetList <- lapply(sheets,openxlsx::read.xlsx,xlsxFile=filename)
names(SheetList) <- sheets

关于将多个包含多个工作表的 xlsx 文件读取到一个 R 数据框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38197705/

相关文章:

r - 在单个管道中使用 tidyverse 拆分、 reshape 、绑定(bind)堆叠的宽数据

R按条件累计总和并重置

excel - 如何检测用户窗体控件是否因鼠标单击或选项卡而失去焦点/兴奋

linux - BIRT .xlsx 文件在 Linux 环境中损坏,而在 Windows 环境中运行良好

POI 中的 Java Excel/POJO 映射

r - 使用 ggplot2 绘制自举样本(多列)

regex - 在 R 中形成和使用正则表达式

string - 需要有关 Excel 和 VBA 字符串处理和存储限制的信息 - 以及建议的解决方法

python - 在 python (xlwt) 中设置 excel 列样式

r - 我们如何使用 R 创建 Excel 色标?