R语言 如何读取一个有多个表的XLSX文件

R语言 如何读取一个有多个表的XLSX文件

在这篇文章中,我们将看到如何在R语言中读取一个有多个表的XLSX文件。在R语言中,有各种外部包用于读取带有多张纸的XLSX文件。

使用的文件

如何在R语言中读取一个有多个表的XLSX文件?

方法1:使用readxl包

R语言中的readxl包用于在R语言中导入和读取Excel工作簿,它可以用来轻松地工作和修改.xslsx表。它可以通过以下语法安装并加载到R工作空间中。

install.packages("readxl")

最初,调用excel_sheets()方法来获取Excel工作簿中包含的所有工作表名称,并指定文件路径。

excel_sheets(path)

R中的lapply()方法用于将一个函数(无论是用户定义的还是预先定义的)应用于R列表或数据框中包含的一组组件。lapply( ) 方法返回一个与输入对象相同长度的对象。

语法: lapply( obj , FUN)

参数

obj – 要应用函数的对象

FUN – 要在obj对象的不同组件上应用的函数。

FUN是这个包存储的read_excel方法,用于将指定的工作表名称的内容读入tibble中,tibble是一种类似于表格的结构,用于以固定的行和列存储数据。lapply方法将read_excel方法应用于工作簿的每一个工作表。

语法: read_excel(path, sheet)

参数

path – 文件路径

sheet – 要读取的工作表名称

read_excel方法返回的tibble对象可以再次使用lapply方法转换为数据帧,并指定函数as.data.frame()将每个对象转换为数据帧。这些数据框架可以使用内置的R names()方法分配给相应的工作表名称,以获得更好的清晰度。

names (df) <- new-name

代码

# 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)

输出

$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

方法2:使用里奥包。

rio包用于 刺激在R中进行快速和简单的数据导入和导出操作。Rio对文件格式本身进行推理,可以用来轻松地读取文件 。

install.packages("rio")

R中的import()和export()方法决定了指定文件扩展名的数据结构。 import_list()方法从一个多对象文件中导入一个数据框架列表,例如,Excel工作簿或R的压缩文件。

语法: import_list(file)

参数 :

file – 要访问的Excel工作簿的文件名

在读取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( ) 方法返回一个与输入对象相同长度的对象。

语法: lapply( obj , FUN)

参数

obj – 要应用函数的对象

FUN – 要在obj对象的不同组件上应用的函数。

在使用前面的方法检索了不同的工作表名称后,函数read.xlsx被应用在工作簿的每一个工作表上。read.xlsx方法用于从Excel文件或工作簿对象中读取数据到指定文件路径上的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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程