0

我有两个表,每个表的开头如下:

表 1:所有 SNP

   SNp           Gene
rs1798922   ENSG00000167634
rs4677723   ENSG00000167634
rs1609823   ENSG00000104450
rs11597390  ENSG00000104643
rs7824557   ENSG00000104643
rs1371867   ENSG00000104450

表 2:每个基因的最佳 SNP

  SNP            Gene
rs1371867   ENSG00000104450
rs7824557   ENSG00000104643
rs1671152   ENSG00000167634
rs11597390  ENSG00000095485
rs285757    ENSG00000185442

表 1 显示了具有相应 SNP 的基因列表。可以看出,同一个基因在表中的许多地方重复出现。

表 2 是过滤表 1 中每个基因的所有 SNP 后的结果,每个基因只保留一个SNP(根据 p 值保留最佳 SNP,尽管这里不相关)。

所以换句话说,表 1 中有一些 SNP 没有包含在表 2 中,因为表 2 只保留了每个基因的最佳 SNP。

对于每个基因,我想使用 R 来比较 2 个表并输出未包含在表 2 中的该基因的 SNP。所以比较的规范是基因名称,由于表中有很多基因,它会不断变化。

4

2 回答 2

3

假设所有 SNP 都不同,试试这个:

subset(t1,!(t1$SNp %in% t2$SNP))
于 2013-06-27T09:48:57.573 回答
1

另一种解决方案是针对merge2 个数据集并采用不完整的情况:

res <- merge(dat.all,dat.best,by.x='SNP',by.y='SNP',
             suffixes =c('.all','.best'),
             all.x=TRUE,all.y=TRUE)

然后只保留最好的基因中不存在的基因:

res[is.na(res$Gene.best),]
        SNP        Gene.all Gene.best
3 rs1609823 ENSG00000104450      <NA>
4 rs1798922 ENSG00000167634      <NA>
5 rs4677723 ENSG00000167634      <NA>
于 2013-06-27T10:00:51.490 回答