使用R对Excel文件进行批量读取

一般来说,批量读取的数据文件都需要具有相同的列结构(列名、列类型),否则无法批量操作。

重要事情再说两遍:

批量读取的数据文件都需要具有相同的列结构!!

批量读取的数据文件都需要具有相同的列结构!!

1. 批量读取多个Excel文件 

1.1 导入的全部Excel 文件的完整路径,

  • 可以任意嵌套:读取该路径下所有目录和子路径下的所有Excel,只需要把参数recurse设置为TRUE
files = fs::dir_ls("C:/Data/Excel_Location", recurse = TRUE, glob = "*.xlsx")
files

1.2 批量读取【默认仅读取第一个Sheet】,合并成一个数据文件

library(readxl)
library(purrr)

# 增加一列[source列]表明数据来自哪个文件
df = map_dfr(set_names(files), read_xlsx, .id = "source")
head(df)

如果需要批量读取多个Excel文件的第2个sheet,使用sheet参数,具体如下。 

# 方式1
map_dfr(set_names(files), read_xlsx, sheet = 2, .id = " 来源")


# 方法2: 改用purrr风格公式形式
map_dfr(set_names(files), ~ read_xlsx(.x, sheet = 1), .id = " 来源")

2. 批量读取一个Excel的多个sheet

path = "Datas/Excel_Data.xlsx"    # Excel 文件路径
df = map_dfr(set_names(excel_sheets(path)), ~ read_xlsx(path, sheet = .x), .id = "sheet")
head(df)

3. 重要函数解释

set_names(files) 是将该字符向量,变成命名字符向量,名字就用元素值;

excel_sheets() 函数: 它的作用在该Excel 文件上,提取各个sheet 名字,得到字符

map_dfr(.x, .f, .id): 将函数.f 依次应用到序列.x 的每个元素返回数据框,再bind_rows 按行合并为一个数据框,.id 可用来增加新列描述来源。【purrr包】

read_xlsx(): 读取xlsx 文件   【readxl 包】

4. 参考教材

R 语言编程— 基于tidyverse,作者:张敬信,组织:哈尔滨商业大学

你可能感兴趣的:(R的批量技术,excel)