【发布时间】:2014-05-16 20:09:26
【问题描述】:
我正在处理大型文件,我想只提取其中一列的值包含在另一个文件的列的值中的行。
例如,在 file1 中,我有 10,000 行看起来像这样:
Chr13998356 T C
Chr1401532 A G
Chr14021851 A T
我在文件 2(100,000+ 行)中只想要文件 1 的第 1 列中存在第 1 列中的值的行。所以对于文件 2,我有:
Chr1 401530 G G 60 0 60 11
Chr1 401531 A A 60 0 60 11
Chr1 401532 A G 30 170 60 11
我想得到第三个文件:
Chr1 401532 A G 30 170 60 11
此文件的行数可能在几到 10,000 行之间。
在 R 中,我会使用 df3 <- df2[df2[,1] %in% df1[,2],] 之类的东西,但文件太大了。
有简单的 UNIX 解决方案吗?使用 comm 之类的东西,但只匹配第一列而不是整行将是完美的。或者使用 grep,但同时搜索 10K 模式。
有什么想法吗?
【问题讨论】:
-
使用 data.table 包,这在 R 中也应该很快。