首页 > 解决方案 > 如何识别两个数据帧之间的唯一数据

问题描述

如果标题不是最好的,我很抱歉。我不知道如何用正确的术语来表达。

我正在使用 dpylr 进行一些过滤。因此,提供一点背景知识,df1是所有人类基因的列表。df2有一个涉及某些途径的基因列表。为我提供列表的软件df2并不总是使用 df1 中的正确基因名称,因此当我使用此过滤器时它们会被跳过

filtered <- df1 %>%
    filter(gene.name %in% df2$V1)

所以我遗漏了一些我感兴趣的数据。我想知道是否有办法将调用的新 dffiltereddf2一些标记独特差异的代码进行比较?数据框的大部分filtered将与相同,df2df2只会包含不正确的基因名称。我想这样做的原因是因为我想回去更正基因名称。我 df1 和 df2 比示例大得多,因此不容易捕捉。

这是我所说的一个例子,所以也许它会更有意义

df1

gene.name ADCY1 ADCY2 ADCY3 ADCY4

df2

gene.name AC1 ADCY2 AC3 ADCY4

过滤

gene.name ADCY2 ADCY4

标签: rdplyr

解决方案


另一个有趣的方法来获得 not-in 功能是编写像这样的小函数

'%notin%' <- function(x,y)!('%in%'(x,y))

然后你可以以一种很好的方式得到答案:

unique_differences<-df2 
    %>% filter(gene.name %notin% unlist(df1))

推荐阅读