导入 excel 个包含多个工作表的工作簿
Import excel workbook with multiple sheets
我想将一个 excel 工作簿导入到 R 中,其中包含多个工作表。但是,我似乎无法完成这项工作。我一直在使用的代码如下:
library(XLConnect)
# Read Excel Sheet
excel <- loadWorkbook("C:/Users/rawlingsd/Downloads/17-18 Prem Stats.xlsx")
# get sheet names
sheet_names <- getSheets(excel)
names(sheet_names) <- sheet_names
# put sheets into a list of data frames
sheet_list <- lapply(sheet_names, function(.sheet){readWorksheet(object=excel, .sheet)})
# limit sheet_list to sheets with at least 1 dimension
# sheet_list2 <- sheet_list[sapply(sheet_list, function(x) dim(x)[1]) > 0]
# code to read in each excel worksheet as individual dataframes
for (i in 1:length(sheet_list)){assign(paste0("2018df", i), as.data.frame(sheet_list[i]))}
# define function to clean data in each data frame (updated based on your data)
如果有人可以帮助我处理我的代码或分享适用于他们的代码,将不胜感激
我用的是:
full_excel_read<-function(fpath,v=TRUE){
sheetnames <- excel_sheets(fpath)
workbook <- sapply(sheetnames,function (x){readxl::read_excel(fpath,sheet = x)})
for (sh in sheetnames) {
workbook[[sh]]<-as.data.table(workbook[[sh]])
}
if (v){
lapply(sheetnames, function(x){View(workbook[[x]],x)})
}
workbook
}
您可以使用 readxl
包。请参阅以下示例。
library(readxl)
path <- readxl_example("datasets.xls")
sheetnames <- excel_sheets(path)
mylist <- lapply(excel_sheets(path), read_excel, path = path)
# name the dataframes
names(mylist) <- sheetnames
电子表格将被捕获到一个列表中,工作表名称作为列表中数据框的名称。
如果您想将数据帧从列表中移出,请使用下一段代码。
# Bring the dataframes to the global environment
list2env(mylist ,.GlobalEnv)
请查看 openxlsx 包,它允许您使用 excel 工作簿做很多事情。
这是一个代码脚本,用于读取给定工作簿中的所有工作表。
library(openxlsx)
a <- loadWorkbook('~/filename.xlsx')
sheetNames <- sheets(a)
for(i in 1:length(sheetNames))
{
assign(sheetNames[i],readWorkbook(a,sheet = i))
}
您可以验证数据是否已加载到 R 中并且可以在您的工作区中查看。
谢谢。
见Read all worksheets in an Excel workbook into an R list with data.frames
require(XLConnect)
wb <- loadWorkbook(system.file("demoFiles/mtcars.xlsx", package = "XLConnect"))
lst <- readWorksheet(wb, sheet = getSheets(wb))
lst
是一个命名列表,其名称对应于 sheet 名称。请注意,readWorksheet
是矢量化的,因此您可以通过单个 readWorksheet
调用读取多个作品sheet。
我想将一个 excel 工作簿导入到 R 中,其中包含多个工作表。但是,我似乎无法完成这项工作。我一直在使用的代码如下:
library(XLConnect)
# Read Excel Sheet
excel <- loadWorkbook("C:/Users/rawlingsd/Downloads/17-18 Prem Stats.xlsx")
# get sheet names
sheet_names <- getSheets(excel)
names(sheet_names) <- sheet_names
# put sheets into a list of data frames
sheet_list <- lapply(sheet_names, function(.sheet){readWorksheet(object=excel, .sheet)})
# limit sheet_list to sheets with at least 1 dimension
# sheet_list2 <- sheet_list[sapply(sheet_list, function(x) dim(x)[1]) > 0]
# code to read in each excel worksheet as individual dataframes
for (i in 1:length(sheet_list)){assign(paste0("2018df", i), as.data.frame(sheet_list[i]))}
# define function to clean data in each data frame (updated based on your data)
如果有人可以帮助我处理我的代码或分享适用于他们的代码,将不胜感激
我用的是:
full_excel_read<-function(fpath,v=TRUE){
sheetnames <- excel_sheets(fpath)
workbook <- sapply(sheetnames,function (x){readxl::read_excel(fpath,sheet = x)})
for (sh in sheetnames) {
workbook[[sh]]<-as.data.table(workbook[[sh]])
}
if (v){
lapply(sheetnames, function(x){View(workbook[[x]],x)})
}
workbook
}
您可以使用 readxl
包。请参阅以下示例。
library(readxl)
path <- readxl_example("datasets.xls")
sheetnames <- excel_sheets(path)
mylist <- lapply(excel_sheets(path), read_excel, path = path)
# name the dataframes
names(mylist) <- sheetnames
电子表格将被捕获到一个列表中,工作表名称作为列表中数据框的名称。
如果您想将数据帧从列表中移出,请使用下一段代码。
# Bring the dataframes to the global environment
list2env(mylist ,.GlobalEnv)
请查看 openxlsx 包,它允许您使用 excel 工作簿做很多事情。 这是一个代码脚本,用于读取给定工作簿中的所有工作表。
library(openxlsx)
a <- loadWorkbook('~/filename.xlsx')
sheetNames <- sheets(a)
for(i in 1:length(sheetNames))
{
assign(sheetNames[i],readWorkbook(a,sheet = i))
}
您可以验证数据是否已加载到 R 中并且可以在您的工作区中查看。
谢谢。
见Read all worksheets in an Excel workbook into an R list with data.frames
require(XLConnect)
wb <- loadWorkbook(system.file("demoFiles/mtcars.xlsx", package = "XLConnect"))
lst <- readWorksheet(wb, sheet = getSheets(wb))
lst
是一个命名列表,其名称对应于 sheet 名称。请注意,readWorksheet
是矢量化的,因此您可以通过单个 readWorksheet
调用读取多个作品sheet。