我之前写过一篇批量读取Excel数据的,代码比较原始和啰嗦:张敬信:【Matlab/R语言】批量读入Excel文件zhuanlan.zhihu.com
近年来,R语言技术突飞猛进,再来一篇更简洁高级的。
批量读取并合并,道理很简单,总共分三步:
(1) 获取批量数据文件的路径
(2) 循环机制批量读取
(3) 合并成一个数据文件
强大的purrr包+管道,使得后两步可以同时做,或者一气呵成。
载入R包:
library(tidyverse)
library(readxl)
library(writexl)
以xlsx文件为例,如果是xls文件,改用read_xls()函数即可,或者不区分,直接用read_excel()也行。
将合并后的数据写出到 Excel :
write_xlsx(df, "新工作簿.xlsx") # 写出
一. 多个数据表列名相同
这是最常见的情形,读取+按行堆叠合并,即可得到总的数据表。再分两种情况讨论:数据在多个工作簿(即多个xlsx文件)
比如,在datas文件夹下有3个xlsx文件,每个文件的列名都是相同的:
files = list.files("datas/", pattern = "xlsx", full.names = TRUE)
df = map_dfr(files, read_xlsx) # 批量读取+按行堆叠合并
df
注1:数据文件名可以随便,不需要规律命名。
注2:数据文件甚至可以嵌套多层文件夹,只需要设置参数 recursive = TRUE.
2. 数据在一个工作
R语言批量读取与合并Excel数据的高效方法

本文介绍了使用R语言的tidyverse、readxl和writexl包来批量读取和合并Excel数据的简洁方法。无论数据分布在多个工作簿还是同一工作簿的不同工作表中,都能通过purrr包的map_dfr和reduce函数进行高效处理。对于列名相同的文件,可以简单地按行堆叠合并;而对于列名不同的文件,可以通过全连接(by参数)实现数据整合。
最低0.47元/天 解锁文章
1410

被折叠的 条评论
为什么被折叠?



