2014-02-16 43 views
0

我有兩個非常大的基因列表A和B.A有兩列:GeneID和p值,而B只有一列GeneID。有B中大約10萬個基因,這些都是基因的一個子集(約70基因在這裏):從R中的數據集中抽取大量指定行

 
GeneListA 
GeneID p.value 
41931  0.0210 
41931  0.0003 
5310612 0.3161 
5310612 0.7089 
5310612 0.0021 
98317  0.1139 
98317  0.0009 
215688 0.0031 
215688 0.0008 

GeneListB 
GeneID 
41931 
41931 
215688 
215688 

Desired GeneListC 
5310612 0.3161 
5310612 0.7089 
5310612 0.0021 
98317  0.1139 
98317  0.0009 

我不想在B中的基因一露面了。我如何擺脫他們,同時仍然保持我的p值在A?我到目前爲止嘗試了三種不同的方法:

  1. 我擺脫了我的p值列,所以這兩個列表中只有Entrez基因ID。然後,我採用了以下代碼:new<-A[setdiff(rownames(A),rownames(B)),],但我得到了一組完全不同的基因。這是由A和B基因的一個看似隨意的混合物,而不是A-B

  2. 我也試過:new<-A[!apply(A,1,FUN=function(y){any(apply(B,1,FUN=function(x){all(x==y)}))}),]

  3. 最後,我試圖通過EntrezGeneID合併,但這是沒用的爲好。

我被這個摧毀,所以任何幫助將不勝感激。

回答

0

您可以通過%in%運算符將數據框子集。

GeneListA[!GeneListA$GeneID %in% GeneListB$GeneID, ] 

!的聲明變得相結合,給我所有的GeneListA其中GeneID不GendeID從GeneListB。

+0

你是怎麼做到的?!?棒極了。它工作完美。我感到震驚。實驗室中的任何事情都無法完美運作謝謝你,謝謝你,謝謝你。 – Zishaan

+0

@Zishaan看到'?match'。 –

相關問題