R数据框如何取交集

作者: 生信交流平台 | 来源:发表于2021-04-11 20:18 被阅读0次

前面给大家介绍过了

☞R批量预测miRNA和靶基因之间的调控关系-ENCORI篇

R批量预测miRNA和靶基因之间的调控关系-TargetScan篇

有小伙伴拿自己的数据试了一下,反馈预测结果太多了。一般对于多个数据库或者多个软件预测的结果,可以通过取交集来提高预测结果的可信度,并且这样也能大大减少最后预测结果的数目。

我们前面介绍过RNA相互作用神器——ENCORI,这个数据库就提供多个miRNA靶基因预测软件的预测结果。你可以在查询miRNA靶基因的时候限定使用哪些预测软件(如下图红圈所示),这样得到的结果就是多个预测软件预测结果的交集。这里需要注意,限定的软件越多,得到的结果会越少,也有可能完全得不到结果,所以这个需要根据自己数据的实际情况确定。

那么我们怎么利用R代码来对miRNA预测结果取交集呢?

我们知道一般在R里,对向量取交集,直接用intersect函数就可以了。

a=c("a","b","c")
b=c("b","c","g")
intersect(a,b)
#[1] "b" "c"

a=1:4
b=3:7
intersect(a,b)
#[1] 3 4

那么如果想对R里面的数据框取交集该如何操作呢?miRNA预测结果都是两列的数据框。

我们首先来创建两个数据框,模拟一下不同的软件的预测结果

set.seed(123)
df1=data.frame(mir=sample(LETTERS,26),target=c(rep("TP53",13),rep("PTEN",13)))
df2=data.frame(mir=sample(LETTERS,26),target=c(rep("TP53",13),rep("PTEN",13)))

如果直接用R里面默认的intersect函数来对数据框取交集,结果是不对的

而我们希望得到的结果是对两列都取交集。

下面给大家介绍三种对R数据框取交集的方法

方法一、我们将各列的信息合并成一个字符串,然后取交集

#将各列的信息用_连接起来
combine1=apply(df1,1,function(x) paste(x,collapse = "_"))
combine2=apply(df2,1,function(x) paste(x,collapse = "_"))
#查看合并后的字符串向量1和字符串向量2的交集
index=combine1 %in% combine2
#取出原始的数据框的交集数据
result1=df1[index,]
#保存数据框交集的结果
write.table(file="intersect1.txt",result1,quote=F,row.names = F,sep="\t")

方法二、利用dplyr包里的intersect函数

#加载dplyr包
library(dplyr)
#直接利用dplyr包里面的intersect函数对数据框取交集
result2=intersect(df1,df2)
#保存交集结果
write.table(file="intersect2.txt",result2,quote=F,row.names = F,sep="\t")
#查看跟第一种方法得到的结果是否一致
all_equal(result1,result2)
#[1] TRUE

方法三、利用data.table包里的fintersect函数

#加载data.table包
library(data.table)
#将数据框转换成data.table格式,然后利用fintersect函数取交集
result3=fintersect(setDT(df1), setDT(df2))
#保存交集结果
write.table(file="intersect3.txt",result3,quote=F,row.names = F,sep="\t")
#查看跟第一种方法得到的结果是否一致
all_equal(result1,result3)
#[1] TRUE

参考资料:
R数据框如何取交集

相关文章

  • R数据框如何取交集

    前面给大家介绍过了 ☞R批量预测miRNA和靶基因之间的调控关系-ENCORI篇[https://link.zhi...

  • 数据框中提取指定行

    1. 将原数据框读入R环境中: a <- read.csv('xxxx.csv') 2. 取数据框中的13469和...

  • 哈佛R语言课程--5.数据框、矩阵、列表取子集

    学习目标 演示如何从现有的数据结构中取子集,合并及创建新数据集。 导出数据表和图以供在R环境以外使用。 1.数据框...

  • 191201 R语言学习笔记2

    day1已经获得了一个数据框,先学习对这个数据框进行操作 切片操作,取第1,3行, 然后取第4,6列 R自带很多数...

  • 数据框列的增删 丨数析学院

    问题: 在R中,如何增添或删除数据框中的列? 指南

  • [数析学院]记录查重与去重

    问题 :在R中,如何在向量或是数据框里找到那些重复的元素/记录,并把它们去除呢? 指南: 对于向量: 对于数据框:...

  • R——数据框

    新建与读取数据框 新建数据框 读取数据框 数据框的属性 数据框取子集 数据框编辑 两个表格的连接 删除 元素的名字...

  • R dplyr操作

    求交集、并集和差集 求两个数据框的交集 求两个数据框的并集(自动去除重复) 求两个数据框的并集,不去除重复

  • R语言与生信应用11-R语法-数据框dataframe与R对象的

    数据框dataframe与R对象的命名 数据框dataframe 数据框用来储存表格型的数据 数据框是一种特殊类型...

  • 数据框列的索引与排序

    问题: 在R中,如何对数据框的列进行重新排序? 指南: 上述对数据框进行索引的方式是将其看作是一个列表(数据框在实...

网友评论

    本文标题:R数据框如何取交集

    本文链接:https://www.haomeiwen.com/subject/lxrzkltx.html