tidyverse | R语言中实现集合交并补功能,对列表或者数据框都生效

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
alt
  • df_2
alt

交集操作

# 交集:得到两个数据框中一致的行
> 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!

本文由 mdnice 多平台发布

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

生信分析笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值