从file1获取不在file2中的行

时间:2015-02-19 11:11:33

标签: r

如何根据匹配列(特别是两个文件中的DataName和GeneName)值从file1获取不存在于file2中的行?我已经尝试了函数intersect和subset,但我不知道如何给出两列匹配。

假设我有两个数据框

文件1

geneName  DataName count
 A4GALT    data1   34
 ABAT      data1   34 
 ABCA1     data1   60
 AASS      data2   12 
 ZWINT     data2   39
 ZYG11A    data2   23
 ZYX       data1   1
 ......

file2的

 geneName  DataName
 A4GALT    data1
 ZWINT     data2    
 ABAT      data1

结果data.frame将是

 geneName  DataName  log
 ABCA1     data1     60
 AASS      data2     12
 ZYG11A    data2     23
 ZYX       data1      1

谢谢

2 个答案:

答案 0 :(得分:3)

您可以尝试anti_join

中的dplyr
library(dplyr)
anti_join(df1, df2, by=c('geneName', 'DataName'))

答案 1 :(得分:3)

或尝试基地R:

 file1[!(file1$geneName %in% file2$geneName &
                file1$DataName %in% file2$DataName),]
 #    geneName DataName count
 #3    ABCA1    data1    60
 #4     AASS    data2    12
 #6   ZYG11A    data2    23
 #7      ZYX    data1     1