我有一个主表超过608,000行(前7行如下所示)。这些对应于基因组中的位置以及Affymetrix(和dbSNP)给予它们的一个(或两个标识符)。
Affy SNP ID dbSNP RS ID Chromosome Chromosome Start
Affx-26018273 rs10056215 5 163542505
Affx-26419011 rs10075407 5 2993645
Affx-18203133 rs10196277 2 149188375
Affx-8147963 rs1021996 12 51789617
Affx-30004198 rs10266230 7 152738841
Affx-26076228 rs10516050 5 168199301
Affx-8225327 rs1059513 12 57489709
然后我有另一个只有46行的表。我需要从主表中删除行,如果它们同时在第二个表中的46行中的一行中找到了染色体和染色体起始值。这是第二张表;它没有Affymetrix / dbSNP标识符。
1 5641055
1 8275761
1 18628674
1 119100982
1 155954058
1 213766407
2 85414016
如何过滤掉这些记录?
答案 0 :(得分:3)
使用R
,您可以删除Tab1
中最后一列中显示在46行表Tab2
的第二列中的数字的所有行1} p>
Tab1 <- Tab1[-which(Tab1[,ncol(Tab1)] %in% Tab2[,2]),]
希望这有帮助。
答案 1 :(得分:2)
您可以使用anti_join
软件包中的dplyr
函数或该软件包的filter
函数。
假设您的data.frame是内置mtcars
,并且您希望从以下data.frame过滤出具有柱面值的汽车,即使用4或6个柱面:
dontuse <- data.frame(cyl = c(4,6), blah = c(1,2))
你可以跑:
anti_join(mtcars, dontuse)
或
mtcars %>%
filter(! cyl %in% dontuse$cyl)
这两个返回行cyl
不是4或6。
mpg cyl disp hp drat wt qsec vs am gear carb
1 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
2 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
3 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
4 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
5 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
6 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
7 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
8 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
9 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
10 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
11 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
12 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
13 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
14 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8