2014-02-16 38 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'。 –

相关问题