0

私は 2 つのテーブルを持っています。それぞれの開始点を以下に示します。

表 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 をフィルター処理した後の結果であり、遺伝子ごとに1 つのSNPのみを保持します (ここでは関係ありませんが、p 値に従って最良の SNP を保持します)。

つまり、表 2 には各遺伝子の最適な SNP のみが保持されているため、表 1 には表 2 に含まれていない SNP がいくつかあります。

遺伝子について、R を使用して 2 つのテーブルを比較し、その遺伝子のテーブル 2 に含まれていない SNP を出力したいと考えています。したがって、比較の仕様は遺伝子名であり、テーブルには多くの遺伝子があるため、常に変化します。

4

2 に答える 2

1

別の解決策はmerge、2 つのデータセットに対するもので、不完全なケースを取り上げます。

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 に答える