r - 如何识别两个数据帧之间的唯一数据
问题描述
如果标题不是最好的,我很抱歉。我不知道如何用正确的术语来表达。
我正在使用 dpylr 进行一些过滤。因此,提供一点背景知识,df1
是所有人类基因的列表。df2
有一个涉及某些途径的基因列表。为我提供列表的软件df2
并不总是使用 df1 中的正确基因名称,因此当我使用此过滤器时它们会被跳过
filtered <- df1 %>%
filter(gene.name %in% df2$V1)
所以我遗漏了一些我感兴趣的数据。我想知道是否有办法将调用的新 dffiltered
与df2
一些标记独特差异的代码进行比较?数据框的大部分filtered
将与相同,df2
但df2
只会包含不正确的基因名称。我想这样做的原因是因为我想回去更正基因名称。我 df1 和 df2 比示例大得多,因此不容易捕捉。
这是我所说的一个例子,所以也许它会更有意义
df1
gene.name
ADCY1
ADCY2
ADCY3
ADCY4
df2
gene.name
AC1
ADCY2
AC3
ADCY4
过滤
gene.name
ADCY2
ADCY4
解决方案
另一个有趣的方法来获得 not-in 功能是编写像这样的小函数
'%notin%' <- function(x,y)!('%in%'(x,y))
然后你可以以一种很好的方式得到答案:
unique_differences<-df2
%>% filter(gene.name %notin% unlist(df1))