删除具有特定字符但不是部分相同字符的行

时间:2017-08-31 07:11:42

标签: r grep

我正在处理一些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),]

然而,我发现所有的基因含有&#34; aacC&#34;除去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

你能帮我解释一下代码吗?我只想删除&#34; aacC&#34; &#34; tet(34)&#34;,但不是&#34; aacC1&#34;,&#34; aacC2&#34;,&#34; aacC4&#34;。我认为可能是我错过了使用&#34; grep&#34;功能。

1 个答案:

答案 0 :(得分:-1)

假设您的数据位于名为qPCR的数据框中,我会使用subset1 <- qPCR[ which(qPCR$Gene != 'aacC' & qPCR$Gene != 'tet(34)'), ]