2017-08-31 36 views
0

我处理一些qPCR的结果,我想删除的假阳性结果在R的原始数据如下:删除特定字符的行而不是部分相同的字符

Gene Sample Ct 
aacC 1 27.57863 
aacC1 1 23.64810 
aacC2 1 28.65250 
aacC4 1 34.21550 
tetA 1 25.37649 
tet(34) 1 29.39106 
aacC 2 33.89373 
aacC1 2 30.94777 
aacC2 2 35.08097 
aacC4 2 24.55223 
tetA 2 11.88988 
tet(34) 2 18.39641 
aacC 3 30.64538 
aacC1 3 27.13225 
aacC2 3 11.72730 
aacC4 3 23.60715 
tetA 3 15.78128 
tet(34) 3 12.49784 

我想去除基因“aacC”和“tet(34)”。我期望的结果是:

Gene Sample Ct 
aacC1 1 23.64810 
aacC2 1 28.65250 
aacC4 1 34.21550 
tetA 1 25.37649 
aacC1 2 30.94777 
aacC2 2 35.08097 
aacC4 2 24.55223 
tetA 2 11.88988 
aacC1 3 27.13225 
aacC2 3 11.72730 
aacC4 3 23.60715 
tetA 3 15.78128 

我使用的代码如下:

false_signal<-c("aacC", "tet(34)") 
ct<-ct[!grepl(paste(false_signal, collapse="|"), ct$Gene),] 

然而,我发现含有 “AACC” 除去所有基因,和TET(34)被留。结果是:

Gene Sample Ct 
tetA 1 25.37649 
tet(34) 1 29.39106 
tetA 2 11.88988 
tet(34) 2 18.39641 
tetA 3 15.78128 
tet(34) 3 12.49784 

你能帮我解码吗?我只想删除“aacC”和“tet(34)”,但不是“aacC1”,“aacC2”,“aacC4”。我想可能是我在使用“grep”函数时错过的东西。

+2

也许使用具有精确匹配“%的%”? 'ct_clean < - ct [!ct $ Gene%in%c(“aacC”,“tet(34)”),]' – zx8754

+0

或非常简单:ct_clean < - ct [ct $ Gene!=“aacC”&ct $ Gene!=“tet(34)”,] – KoenV

+2

请勿使用正则表达式进行精确匹配。 –

回答

-1

假设你的数据在一个名为qPCR的数据帧,我会用subset1 <- qPCR[ which(qPCR$Gene != 'aacC' & qPCR$Gene != 'tet(34)'), ]

+0

谢谢莱拉。由于我有另外40个引物可以从结果中删除,我想用一个简单的代码来实现这个,你有什么建议吗? – Guagua

+0

糟糕...你看过zx8754标记的重复问题吗? – Leila

相关问题