R语言批量读取写入Excel数据 r导出输出写入excel多个sheet 导出excel 导入 excel 读入excel 表格
2023-09-14 09:09:48 时间
前一段,写过一篇:R语言中写入Excel的不同sheet表格,最近学习了tidyverse的方法,感觉需要总结一下,更新一下知识结构。
本文准备用实际数据,做一下操作:
「批量读取:」
- 批量读取多个Excel数据
- 批量读取一个Excel数据的不同表格
「批量写入」
- 批量写入Excel数据
- 1,批量写入到不同的Excel中
- 2,批量写入到一个Excel的不同表格中
1. 模拟数据
模拟数据的过程很简单,新建一个Excel,里面加点内容,然后复制粘贴,重命名。
❝ 懂了这么多编程知识,这一步显得不够高科技,但是确实是很直接。
❞
2. 批量读取
2.1 批量读取多个Excel数据
「步骤:」
- 先把目录下的Excel名称列出来
- 批量读取
- 后续操作
library(tidyverse)
library(openxlsx)
list_name = dir("./",pattern = ".xlsx")
list_name
re = map(list_name, ~ read.xlsx(.,sheet=1))
re
names(re) = list_name
re
write.xlsx(re,"../re_hebing.xlsx")
目录:
读取结果:
结果文件:
2.2 批量读取一个Excel的不同sheet表格
「步骤:」
- 共有8个sheet
- 批量读取
- 后续操作
name_sheet = 1:8
re2 = map(name_sheet, ~ read.xlsx("../re_hebing.xlsx",sheet=.))
re2
3. 批量写入
3.1 批量写入到不同的Excel中
「步骤:」
- 内容为list,每个元素为一个data.frame
这里,我们用re
的结果:
> str(re)
List of 8
$ a1.xlsx:'data.frame': 4 obs. of 2 variables:
..$ ID: num [1:4] 1 2 3 4
..$ y : num [1:4] 0.6275 0.4325 0.6046 0.0681
$ a2.xlsx:'data.frame': 4 obs. of 2 variables:
..$ ID: num [1:4] 1 2 3 4
..$ y : num [1:4] 0.6275 0.4325 0.6046 0.0681
$ a3.xlsx:'data.frame': 4 obs. of 2 variables:
..$ ID: num [1:4] 1 2 3 4
..$ y : num [1:4] 0.6275 0.4325 0.6046 0.0681
$ a4.xlsx:'data.frame': 4 obs. of 2 variables:
..$ ID: num [1:4] 1 2 3 4
..$ y : num [1:4] 0.6275 0.4325 0.6046 0.0681
$ a5.xlsx:'data.frame': 4 obs. of 2 variables:
..$ ID: num [1:4] 1 2 3 4
..$ y : num [1:4] 0.6275 0.4325 0.6046 0.0681
$ a6.xlsx:'data.frame': 4 obs. of 2 variables:
..$ ID: num [1:4] 1 2 3 4
..$ y : num [1:4] 0.6275 0.4325 0.6046 0.0681
$ a7.xlsx:'data.frame': 4 obs. of 2 variables:
..$ ID: num [1:4] 1 2 3 4
..$ y : num [1:4] 0.6275 0.4325 0.6046 0.0681
$ a8.xlsx:'data.frame': 4 obs. of 2 variables:
..$ ID: num [1:4] 1 2 3 4
..$ y : num [1:4] 0.6275 0.4325 0.6046 0.0681
这里,我们将工作目录设置为上一级,用map2
进行操作:
setwd("../")
sheet_name = names(re)
sheet_name
map2(re,sheet_name,write.xlsx)
结果:
3.2 批量写入到统一个Excel中不同sheet表格
这就不用操作,直接写入就行了,一行代码:
write.xlsx(re,"new_new_many_sheets.xlsx")
4. 知识点总结
- 使用了map和匿名函数进行批量操作
- 写入多个Excel时,用了map2函数,其实还可以用walk2函数,walk2就不会返回结果到终端了
- 默认的write.xlsx函数,支持写入list就是多个sheet表格
- 有时候重命名list更有用,比如写入到不同sheet表格中,名称就是不同sheet表的名称
- 读取不同sheet表格时,可以用1,2,3表示对应的sheet
- 另外,如果想把批量读取的Excel进行行合并或者列合并,可以用map_dfc或者map_dfr更简单。当然,后面也可以用map再做处理
- 总之,map函数就是批量操作的,越用越6
> 欢迎关注我的公众号:`育种数据分析之放飞自我`。主要分享R语言,Python,育种数据分析,生物统计,数量遗传学,混合线性模型,GWAS和GS相关的知识。
相关文章
- 管家婆软件数据导出Excel表后数据错乱的解决办法
- excel宏 java,Microsoft Excel宏运行Java程序
- jxls工具导出excel,报错:Cannot load XLS transformer. Please make sure a Transformer implementation is in cl
- EasyExcel写excel文件
- pandas数据清洗详细教程_excel数据清洗工具
- java导出excel(一):单sheet
- java数据导出为excel表格_将数据库表中数据导出到文本文件
- Excel中如何批量重命名工作表与将每个工作表导出到单独Excel文件
- JAVA以UTF-8导出CSV文件,用excel打开产生乱码的解决方法
- bootstrap-table数据导出Excel 、JSON、txt、pdf等
- Excel Power Query与Power Pivot结合:TOP-N对象贡献度分析
- SQL Server查询结果导出到EXCEL表格的图文教程
- java根据excel模版导出数据详解编程语言
- MySQL查询结果导出至Excel:一步到位(mysql查询结果导出excel)
- abap将内表数据导出为excel文件详解编程语言
- ABAP ALV报表导出EXCEL时,字段缺失详解编程语言
- 数据从Excel表格一路导入MySQL(excel表格导入mysql)
- 数据快速导出Excel:从MySQL中快速获取数据(excel导出mysql)
- MySQL数据导出Excel快速教程(mysql转excel)
- 极速提升业务效率:利用Excel快速导入Oracle数据库(excel数据导入oracle)
- asp.netGridView导出到Excel代码
- asp.netGrid导出Excel实现程序代码
- PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
- js导出格式化的excel实例方法
- JS将表单导出成EXCEL的实例代码
- c#生成excel示例sql数据库导出excel
- c#连接excel示例分享
- C#导入导出EXCEL文件的代码实例
- 使用工具plsqldev将Excel导入Oracle数据库