通过匹配另一个文件中的 snp 列对 GWAS 结果进行子集

问题描述

我有一个 GWAS 汇总估算文件,其中包含以下列(文件 1):

1   chr1_1726_G_A      0.023  0.160
1   chr1_20184_GAATA_G 0.033  0.180
1   chr1_791101_T_TGG  0.099  0.170

文件 2

chr1_20184_GAATA_G
chr1_791101_T_TGG

我想将文件 2 的第 1 列与文件 1 的第 2 列匹配以创建一个文件 3,例如:

1   chr1_20184_GAATA_G 0.033  0.180
1   chr1_791101_T_TGG  0.099  0.170

通过使用下面的代码,我得到一个空的file3

awk 'FNR==NR{arr[$2];next} (($2) in arr)' file2 file1 > file3

解决方法

对于您显示的示例,请尝试遵循 awk 代码。

awk 'FNR==NR{arr[$0];next} ($2 in arr)' file2 file1

OR

awk 'FNR==NR{arr[$1];next} ($2 in arr)' file2 file1

说明: 对数组使用 $0(在第一个解决方案中)或 $1(在 OR 解决方案中)而不是在第一个块中使用 $2,然后其余代码就可以了匹配;匹配记录在这里。