彩蛋丨利用R语言脚本实现批量合并Excel表格,再也不用手动点来点去了!

这篇具有很好参考价值的文章主要介绍了彩蛋丨利用R语言脚本实现批量合并Excel表格,再也不用手动点来点去了!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

利用R语言脚本实现批量合并Excel表格

在整理数据的时候遇到一个问题:假如有很多个excel表,分别存放了一部分数据,现在想要快速把这些表格的数据汇总到一起,如何用R语言快速完成呢?本文分享一个脚本,能够自动完成类似的工作。

输入文件与背景介绍

假如每个材料(样本)的ID编号是从N001开始依次递增,现在有很多excel表格,第一列是ID信息,之后的每一列代表一个变量(性状、表型),以下用两个表格(多个表格方法同理)举栗子:

彩蛋丨利用R语言脚本实现批量合并Excel表格,再也不用手动点来点去了!

细心的朋友肯定发现了ID这一列不是连续的,而且有缺失,也就是说有些样品的数据是空缺的。在统计的时候,需要将空缺值设为NA,有数据的值按位置提取,最终想要如下样式的数据:

> df_out_660
     ID type year name
1  N001    D 2015 小王    # 来自B表
2  N002 <NA>   NA <NA>
3  N003 <NA>   NA <NA>
4  N004 <NA>   NA <NA>
5  N005 <NA>   NA 大壮    # 来自A表
6  N006 <NA>   NA <NA>
7  N007 <NA>   NA <NA>
8  N008    F 2017 小张
9  N009 <NA>   NA <NA>

解决思路与逻辑关系

  • R语言tidyverse、xlsx包
  • 读入样品ID序列信息,用于后续生成结果文件
  • 迭代读取每个子文件,然后进行左连接
  • 对左连接后的数据判断回原有位置看是否为空
  • 若原有位置为空,则替换为新值
  • 保存最终结果

操作步骤

载入R包和数据

library(xlsx)
library(tidyverse)
# 以下示例仅用两个表格
df_info <- read.xlsx("test.xlsx",sheetName = "info",header = T)
df_A <- read.xlsx("test.xlsx",sheetName = "dataA",header = T)
df_B <- read.xlsx("test.xlsx",sheetName = "dataB",header = T)

所有样品的ID序列按顺序保存在df_info中,另外将每个小表格读入,需要保证第一行信息一致。

数据左连接

df_B_out <- left_join(df_sample,df_A,by="ID")
df_A_out <- left_join(df_sample,df_B,by="ID")

分别将原始样品序列表格和每个子表做左连接,类似于excel中的VLOOKUP函数,得到单个结果。

数据汇总与保存

接下来,对连接后的单个结果做合并处理,通过迭代判断每个单元格的值是否为NA,假如空缺的话将下一个子表的该单元格值替换到这里,达到使不同单元格的值都转移到一张总表的效果,通过这种方式可以将不同子表叠放在一起,获得一张大表,然后将结果输出保存。

for (i in 1:nrow(df_B_out)){
      sample <- df_B_out$ID[i]
      print(sample)
      for (m in 4:ncol(df_B_out)){
            phe <- colnames(df_B_out)[m]
            if (is.na(df_B_out[i,m])){
                  if (!is.na(df_A_out[i,m])){
                        df_B_out[i,m] <- df_A_out[i,m]
                  }
            }
      }
}
write.csv(df_B_out,"./all.csv",quote = F,row.names = F)

灵感小记

谢谢你有耐心看到这里,如果上文中的步骤理解起来比较抽象,我用更通俗易懂的方式说明一下:

假如某项工作需要合作完成最后进行汇总,比如你想做一个调查,每个人只调查一小部分。方法是先用A4纸打印出空模板,然后分发给很多人去同时做,每个人可能只需要填其中的指定某几行。

彩蛋丨利用R语言脚本实现批量合并Excel表格,再也不用手动点来点去了!

最后,你辛苦的收集起来了很多张A4纸,每张上都记录了某部分信息,现在一个问题困扰着你:怎么把这些东一块西一块的数据快速合并到你最初的A4纸上?最快的方法是做梦,我梦到我把一大摞A4纸整齐的摞在一起,这时每张A4值的相同单元格处于空间位置的同一维度,只要我大力出奇迹把纸压的特别紧(直到成为二维平面),那么此时我就得到了一张汇总了所有数据的表格(因为不同子表中非空值均被映射到一维状态)

本文就是梦照进现实。

本文由mdnice多平台发布文章来源地址https://www.toymoban.com/news/detail-436651.html

到了这里,关于彩蛋丨利用R语言脚本实现批量合并Excel表格,再也不用手动点来点去了!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • excel 表格多行自动合并

    在现实生活中常常遇到这样的一些需求 使用的是三方的插件来实现的 参考: 慧办公-官网 (hbg666.com) (支持 Office 及 WPS) 下载地址:                                                https://www.hbg666.com/ 使用方法系统都有教导

    2024年02月13日
    浏览(36)
  • 批量将excel文件合并

    要批量合并多个Excel文件,可以按照以下步骤进行操作: 1. 导入所需的Python库:首先,您需要导入`pandas`库来处理Excel文件。 import pandas as pd   2. 定义文件路径和输出文件名称: input_folder = \\\"your_input_folder_path\\\" output_file = \\\"your_output_file_path.xlsx\\\"   3. 创建一个空的DataFrame来存储合并

    2024年02月13日
    浏览(41)
  • Python批量合并Excel表

    现收集到多个Excel表,需要对这些表进行汇总合并。但是这些Excel表并不规则,有不少空列,而且这些列名虽然一致,但是顺序各不相同,所以汇总起来并不是那么简单。单独的一个Excel表显示如下: Excel表 起初考虑用openpyxl,但是由于问题较为复杂,最后决定用os和pandas来解

    2024年02月14日
    浏览(42)
  • Pandas快速合并多张excel表格

    目录 一、Excel表格命名存在规律的情况下 二、Excel表格文件名不规律的情况下 1.首先将所有excel表格放到一个文件夹下面 2.用pandas进行合并 三、身份证号合并乱码解决 最近用Pandas合并表格,发现效率非常高,现总结以下两种方法: 对身份证号码合并的时候,会因为编码方式

    2024年02月08日
    浏览(42)
  • 在Microsoft Excel中如何快速合并表格

    在 Excel 中分析数据时,在一个工作表中收集所有必要信息的频率是多少?几乎从来没有!当不同的数据分散在许多工作表和工作簿中时,这是一种非常常见的情况。幸运的是,有几种不同的方法可以将多个表中的数据组合成一个表,本教程将教你如何快速有效地做到这一点。

    2024年02月15日
    浏览(31)
  • ChatGPT炒股:批量自动提取股票公告中的表格并合并数据

    首先,在ChatGPT中输入提示词: 写一段Python代码: F盘文件夹“新三板 2023年日常性关联交易20230704”中很多个PDF文件,用 Tabula提取这些PDF文件中第1页中的第2个表格,然后保存到表格文件中,文件标题名和原PDF文件保持一致; 注意:表格中的元素,如果为None,则替换为空字符

    2024年02月13日
    浏览(44)
  • ArrayList/MySQL数据批量写入Excel表格

    ArrayList/MySQL数据集合写入Excel 1.文章概述: 写入 Excel 文件通常需要使用一些库或工具,而\\\"EasyExcel\\\"通常是指的阿里巴巴开源的EasyExcel库。这个库可以让我们在Java中简便地进行Excel文件的读写操作。 2.导入配置: 3.Excel模板类 4.工具类示例代码:

    2024年02月09日
    浏览(36)
  • pandas(十七)批量拆分与合并Excel文件

    一、Pandas 进行索引和切片的iloc、loc方法 iloc是基于整数位置进行索引和切片的方法 它允许您使用整数来访问 DataFrame 或 Series 中的特定行和列 loc是基于标签进行索引和切片的方法。 它允许您使用标签来访问 DataFrame 或 Series 中特定的行和列 二、Pandas批量拆分与合并Excel文件

    2024年02月12日
    浏览(41)
  • Excel简单宏定义(Microsoft 版)(快速合并多个表格,合并多个工作表,合并特定工作表)

    Excel简单宏定义(Microsoft 版)(快速合并多个表格,合并多个工作表,合并特定工作表) 1. 合并当前工作簿下的所有工作表 当前表格中有两个工作表为Sheet1和Sheet2,目的: 将两个表合并为一个表Sheet1 输入代码并运行 2. 合并当前目录下工作簿中特定工作表 当前目录下中有三个

    2024年02月11日
    浏览(39)
  • QGIS根据excel中分类批量合并地类

    在QGIS中,可以使用Python编写代码来实现根据Excel中土地利用分类进行批量合并一些地类的操作。以下是示例代码: # 导入所需库 from qgis.core import QgsProject, QgsVectorLayer, QgsJoinLayerByFieldOptions # 设置图层路径和文件名 vector_layer_path = \\\'path_to_your_vector_layer.shp\\\'  # 替换为矢量图层的路

    2024年02月12日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包