如何在 R 中读取包含多个工作表的 XLSX 文件?
在本文中,我们将了解如何使用 R 语言读取包含多个 Sheets 的 XLSX 文件。 R 中有各种外部包,用于读取多张纸的 XLSX 文件。
使用的文件:
方法一:使用readxl包
R 中的 readxl 包用于在 R 中导入和读取 Excel 工作簿,可用于轻松工作和修改 .xslsx 工作表。可以使用以下语法将其安装并加载到 R 工作空间中:
install.packages("readxl")
最初,调用 excel_sheets() 方法以获取 Excel 工作簿中包含的所有工作表名称,以及指定的文件路径。
excel_sheets(path)
R 中的 lapply() 方法用于将函数(用户定义的或预定义的)应用于包含在 R 列表或数据框中的一组组件。 lapply() 方法返回一个与输入对象长度相同的对象。
Syntax: lapply( obj , FUN)
Arguments:
obj – The object to apply the function on
FUN – The function to be applied over different components of the object obj.
其中FUN就是这个包存储的read_excel方法,用于将指定sheet名称的内容读入tibble中,tibble是一种类似表格的结构,用于存储固定行和列的数据。 lapply 方法对工作簿的每个工作表应用 read_excel 方法。
Syntax: read_excel(path, sheet)
Arguments:
path – The file path
sheet – The sheet name to read
read_excel 方法返回的 tibble 对象可以使用 lapply 方法再次转换为数据框,并指定函数as.data.frame() 将每个对象转换为数据框。可以使用内置的 R names() 方法为这些数据框分配相应的工作表名称,以提高清晰度。
names (df) <- new-name
代码:
R
# importing required packages
library(readxl)
multiplesheets <- function(fname) {
# getting info about all excel sheets
sheets <- readxl::excel_sheets(fname)
tibble <- lapply(sheets, function(x) readxl::read_excel(fname, sheet = x))
data_frame <- lapply(tibble, as.data.frame)
# assigning names to data frames
names(data_frame) <- sheets
# print data frame
print(data_frame)
}
# specifying the path name
path <- "/Users/mallikagupta/Desktop/Gfg.xlsx"
multiplesheets(path)
R
# specifying the path name
path <- "/Users/mallikagupta/Desktop/Gfg.xlsx"
# importing the required library
library(rio)
# reading data from all sheets
data <- import_list(path)
# print data
print (data)
R
# specifying the path name
path <- "/Users/mallikagupta/Desktop/Gfg.xlsx"
# importing the required library
library(openxlsx)
# getting data from sheets
sheets <- openxlsx::getSheetNames(path)
data_frame <- lapply(sheets, openxlsx::read.xlsx, xlsxFile=path)
# assigning names to data frame
names(data_frame) <- sheets
# printing the data
print (data_frame)
输出:
$Sheet1
ID Name Job
1 1 A Engineer
2 2 B CA
3 3 C SDE
4 4 D CA
5 5 E SDE
$Sheet2
Post Likes
1 A 23
2 B 34
3 C 56
4 D 78
方法二:使用rio包。
里奥包用于刺激R.里约热内卢进行快速,便捷的数据导入和导出操作使得哪些可以用来轻松地阅读文件的文件格式本身的扣除。
install.packages("rio")
R 中的 import() 和 export() 方法确定指定文件扩展名的数据结构。 import_list() 方法从多对象文件(例如 Excel 工作簿或 R 压缩文件)导入数据框列表。
Syntax: import_list(file)
Arguments :
file – The file name of the Excel workbook to access
在读取 Excel 工作簿的输出时保留列名和行名。在读取过程中也可以访问工作表名称。
电阻
# specifying the path name
path <- "/Users/mallikagupta/Desktop/Gfg.xlsx"
# importing the required library
library(rio)
# reading data from all sheets
data <- import_list(path)
# print data
print (data)
输出:
$Sheet1
ID Name Job
1 1 A Engineer
2 2 B CA
3 3 C SDE
4 4 D CA
5 5 E SDE
$Sheet2
Post Likes
1 A 23
2 B 34
3 C 56
4 D 78
方法 3:使用 openxlsx 包。
R 中的 openxlsx 包通过提供用于读取和写入以及修改指定工作簿中的工作表的高级接口来创建和操作 Excel 文件。可以使用以下语法将该包加载并安装到工作空间中:
install.packages("openxlsx")
该包的 getSheetNames( ) 方法用于返回包含在 xlsx 文件中的工作表名称。
getSheetNames(file)
R 中的 lapply() 方法用于将函数(用户定义的或预定义的)应用于包含在 R 列表或数据框中的一组组件。 lapply() 方法返回一个与输入对象长度相同的对象。
Syntax: lapply( obj , FUN)
Arguments:
obj – The object to apply the function on
FUN – The function to be applied over different components of the object obj.
使用前面的方法检索不同的工作表名称后,函数read.xlsx 应用于工作簿的每个工作表。 read.xlsx 方法用于通过指定的文件路径将 Excel 文件或 Workbook 对象中的数据读取到 R data.frame 对象中。
在这种情况下, lapply() 方法将工作表名称作为输入,并返回属于工作簿每个工作表的相应数据框。然后使用 R 中的 names() 方法为这些数据框分配工作表名称。
代码:
电阻
# specifying the path name
path <- "/Users/mallikagupta/Desktop/Gfg.xlsx"
# importing the required library
library(openxlsx)
# getting data from sheets
sheets <- openxlsx::getSheetNames(path)
data_frame <- lapply(sheets, openxlsx::read.xlsx, xlsxFile=path)
# assigning names to data frame
names(data_frame) <- sheets
# printing the data
print (data_frame)
输出:
$Sheet1
ID Name Job
1 1 A Engineer
2 2 B CA
3 3 C SDE
4 4 D CA
5 5 E SDE
$Sheet2
Post Likes
1 A 23
2 B 34
3 C 56
4 D 78