R语言中实现多维数据交并补集合运算,利用tidyverse系列包,intersect、union、setdiff

简介: R语言中实现多维数据交并补集合运算,利用tidyverse系列包,intersect、union、setdiff

R语言集合操作

数据分析时可能会遇到这样的问题:

  1. 我有两个样本,分别得到了各自中关键基因,现在想找出两者共有的关键信息或者两者之间差异的部分,如果有成千上万个怎么实现呢?
  2. 我有两个表格,想找出里面重复出现的行和只在第二个表出现的行,如何实现表格的交并补集合操作呢?

本篇笔记简述tidyverse系列中dplyr包的集合操作过程,实现对列表和数据框的交并补集合运算。

首先载入R包tidyverse:

> library(tidyverse)

列表的集合操作

创建两个变量

> ### 列表的集合操作 ======================================================================
> data_1 <- c(1,2,3,4,5,6,7,8,9)
> data_2 <- c(4,5,5,6,7,11,12,12,13)

集合运算

  • intersect:寻找两个对象的交集
  • union:用于合并两个对象的数据
  • setdiff:用于查找在第一个对象中但不在第二个对象中的元素
> # 交集:得出同时存在于两个列表的值
> out_jiao <- intersect(data_1,data_2)
> # 并集:得出两个列表中所有值的集合
> out_bing <- union(data_1,data_2)
> # 补集:得出存在于前一个列表但是不存在于后一个列表的值
> out_bu <- setdiff(data_1,data_2)

以上是对两个集合进行交并补操作,如果是数据框、矩阵或者字符串,也可以用相同的方法进行操作,下面进行示例

多维数据的集合操作

创建两个数据框

> ### 数据框的集合操作 ======================================================================
> df_1 <- tribble(
+   ~x , ~y , ~z ,
+   1  , "a", T  ,
+   1  , "a", F  ,
+   2  , "b", T  ,
+   3  , "c", F  )
> df_2 <- tribble(
+   ~x , ~y , ~z ,
+   1  , "a", F  ,
+   2  , "m", F  ,
+   4  , "c", T  )
  • df_1

  • df_2

交集操作

> # 交集:得到两个数据框中一致的行
> intersect(df_1,df_2)
# A tibble: 1 × 3
      x y     z    
  <dbl> <chr> <lgl>
1     1 a     FALSE

并集操作

> # 并集:得到两个数据框中所有的唯一行
> union(df_1,df_2)
# A tibble: 6 × 3
      x y     z    
  <dbl> <chr> <lgl>
1     1 a     TRUE 
2     1 a     FALSE
3     2 b     TRUE 
4     3 c     FALSE
5     2 m     FALSE
6     4 c     TRUE

补集操作

> # 补集:得到只存在于第一个数据框中的行
> setdiff(df_1,df_2)
# A tibble: 3 × 3
      x y     z    
  <dbl> <chr> <lgl>
1     1 a     TRUE 
2     2 b     TRUE 
3     3 c     FALSE

tidyverse yyds!

END

© 素材来源于网络,侵权请联系后台删除

往期推荐:

文献丨群体转录组分析锁定关键转录因子

文献丨转录组RNA seq——青年阶段!

文献丨高通量表型组图像识别与GWAS

笔记丨ggplot2热图入门学习笔记

笔记丨PCA分析基本知识和数学原理

图书丨R语言、Python、Linux

超算丨数据分析时电脑配置不够用?试试

软件 | 如何进行基因家族分析?TBtools

服务器丨家用联想台式机重装Linux系统

转录组丨一套完整的操作流程案例

转录组丨利用limma包进行差异表达分析

Python笔记丨函数和类相关基础知识总结

Python笔记丨条件与循环流程知识总结

Python笔记丨数据类型基础与易错点总结

相关文章
|
3月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
4月前
|
存储 数据采集 数据处理
R语言数据变换:使用tidyr包进行高效数据整形的探索
【8月更文挑战第29天】`tidyr`包为R语言的数据整形提供了强大的工具。通过`pivot_longer()`、`pivot_wider()`、`separate()`和`unite()`等函数,我们可以轻松地将数据从一种格式转换为另一种格式,以满足不同的分析需求。掌握这些函数的使用,将大大提高我们处理和分析数据的效率。
|
26天前
|
程序员
R 语言教程 之 R 基础运算 1
本章介绍R语言的基础运算,包括赋值(使用`&lt;-`或`=`)和主要的数学运算符,如加、减、乘、除、乘方、整除及求余等,并通过实例演示了这些运算符的使用方法和运算优先级。
36 6
|
25天前
R 语言教程 之 R 基础运算 2
《R 语言教程 之 R 基础运算 2》介绍了 R 语言中的关系运算符及其使用方法。通过示例展示了如何利用 &gt;、&lt;、==、!=、&gt;=、&lt;= 等运算符比较两个向量的对应元素,并返回布尔值结果。
18 3
|
24天前
R 语言教程 之 R 基础运算 5
本章介绍R语言的基础运算,涵盖简单的算术运算及特殊运算符,如冒号(:)创建数字序列、%in%判断元素是否存在于向量中、%*%进行矩阵乘法等,并通过实例演示这些运算符的使用方法。
24 1
|
24天前
R 语言教程 之 R 基础运算 4
本章《R基础运算》介绍了R语言中的简单运算,重点讲解了赋值运算符的使用方法,包括向左、向右及等于赋值,并通过实例演示了不同赋值方式的效果。
23 1
|
25天前
R 语言教程 之 R 基础运算 3
本章介绍R语言的基础运算,涵盖逻辑运算符的使用,包括按元素逻辑与(&)、逻辑或(|)、逻辑非(!)及仅比较首个元素的逻辑与(&&)和逻辑或(||)运算符。通过实例演示了这些运算符在向量上的应用及其返回的布尔值结果。
26 2
|
23天前
|
C语言
R 语言教程 之 R 基础运算 7
本章《R基础运算》介绍了R语言中的基本数学运算,包括取整、三角及反三角函数,以及正态分布等概率分布函数的使用方法。通过具体实例演示了这些函数在实际操作中的应用,如取整函数`round()`, `ceiling()`, `floor()`的特性,以及正态分布函数`dnorm()`, `pnorm()`, `qnorm()`, `rnorm()`的功能与区别。适合初学者快速掌握R语言的基础数学处理能力。
22 0
|
23天前
|
机器学习/深度学习
R 语言教程 之 R 基础运算 6
本章《R基础运算》介绍了R语言中的基本数学运算与函数,包括求平方根、自然指数、对数等常用函数,并通过实例展示了这些函数的具体应用。例如,`sqrt(4)`返回2,`exp(1)`返回约2.718282等。
21 0
|
2月前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
55 3