R语言 把多个Excel工作表合并成一个数据框架
在这篇文章中,我们将讨论如何在R编程语言中把多个Excel工作表合并成一个数据框架。
下面的XLSX文件 “gfg.xlsx “已被用于所有不同的方法。
方法1:使用readxl包
内置的setwd()方法被用来设置R语言中的工作目录。
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 – 要读取的工作表名称
最终的tibble是由内置的bind_rows()方法产生的,它将单个数据帧作为输入,并为它们分配一个单一的ID属性键。bind_rows()的输出将包含一个列,如果该列出现在任何输入中。输出的tibble包含所有表单中的记录,以及它们各自的数据类型。列名 “Sheet “通过形成一个主列来引导所有的行。
# installing the required libraries
library(readxl)
library(tidyverse)
# specifying the path for file
path <- "/Users/mallikagupta/Desktop/"
# set the working directory
setwd(path)
# accessing all the sheets
sheet = excel_sheets("Gfg.xlsx")
# applying sheet names to dataframe names
data_frame = lapply(setNames(sheet, sheet),
function(x) read_excel("Gfg.xlsx", sheet=x))
# attaching all dataframes together
data_frame = bind_rows(data_frame, .id="Sheet")
# printing data of all sheets
print (data_frame)
输出
# A tibble: 11 x 4
Sheet ID Name Job
<chr> <dbl> <chr> <chr>
1 Sheet1 1 A Engineer
2 Sheet1 2 B CA
3 Sheet1 3 C SDE
4 Sheet1 4 D CA
5 Sheet1 5 E SDE
6 Sheet2 6 F SDE
7 Sheet2 7 G CA
8 Sheet2 8 H CA
9 Sheet2 9 I Admin
10 Sheet3 10 J SDE
11 Sheet3 11 K Admin
方法2:使用rio包
rio包用于 刺激在R中进行快速和简单的数据导入和导出操作。Rio对文件格式本身进行推理,可以用来轻松地读取文件 。
install.packages("rio")
R中的import()和export()方法确定指定文件扩展名的数据结构。import_list()方法从一个多对象文件中导入一个数据帧列表,例如,一个Excel工作簿或一个R压缩文件。
语法: import_list(file, rbind = FALSE)
参数:
file – 要访问的Excel工作簿的文件名
rbind – 是否将数据帧合并为一个数据帧的指示器
# 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 , rbind=TRUE)
# print data
print (data)
输出
ID Name Job _file
1 1 A Engineer 1
2 2 B CA 1
3 3 C SDE 1
4 4 D CA 1
5 5 E SDE 1
6 6 F SDE 2
7 7 G CA 2
8 8 H CA 2
9 9 I Admin 2
10 10 J SDE 3
11 11 K Admin 3