gpt4 book ai didi

使用 data.frames 将 Excel 工作簿中的所有工作表读入 R 列表

转载 作者:行者123 更新时间:2023-12-01 16:20:29 33 4
gpt4 key购买 nike

据我所知,XLConnect 可用于将 Excel 工作表读取到 R 中。例如,这会将名为 test.xls 的工作簿中的第一个工作表读取到 R 中.

library(XLConnect)
readWorksheetFromFile('test.xls', sheet = 1)

我有一个包含多个工作表的 Excel 工作簿。

如何将工作簿中的所有工作表导入到 R 中的列表中,其中列表的每个元素都是给定工作表的 data.frame,并且每个元素的名称对应于 Excel 中工作表的名称?

最佳答案

使用 readxl 更新答案(2015 年 6 月 22 日)

自从发布此问题后,readxl 包已发布。它支持 xlsxlsx 格式。重要的是,与其他 Excel 导入包相比,它可以在 Windows、Mac 和 Linux 上运行,无需安装其他软件。

因此,导入 Excel 工作簿中所有工作表的函数将是:

library(readxl)    
read_excel_allsheets <- function(filename, tibble = FALSE) {
# I prefer straight data.frames
# but if you like tidyverse tibbles (the default with read_excel)
# then just pass tibble = TRUE
sheets <- readxl::excel_sheets(filename)
x <- lapply(sheets, function(X) readxl::read_excel(filename, sheet = X))
if(!tibble) x <- lapply(x, as.data.frame)
names(x) <- sheets
x
}

这可以通过以下方式调用:

mysheets <- read_excel_allsheets("foo.xls")

旧答案

基于@mnel提供的答案,这是一个简单的函数,它接受 Excel 文件作为参数,并将每个工作表作为命名列表中的 data.frame 返回。

library(XLConnect)

importWorksheets <- function(filename) {
# filename: name of Excel file
workbook <- loadWorkbook(filename)
sheet_names <- getSheets(workbook)
names(sheet_names) <- sheet_names
sheet_list <- lapply(sheet_names, function(.sheet){
readWorksheet(object=workbook, .sheet)})
}

因此,可以通过以下方式调用它:

importWorksheets('test.xls')

关于使用 data.frames 将 Excel 工作簿中的所有工作表读入 R 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12945687/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com