gpt4 book ai didi

linux - 如何在 Linux 中从主数据填充子集数据字段

转载 作者:太空宇宙 更新时间:2023-11-04 10:01:39 24 4
gpt4 key购买 nike

我有一个带有 rs id(和其他字段)的 SNP 数据子集,我想用它们各自的染色体编号和染色体位置创建两个新列。我有一个包含所有 SNP(rs id、染色体编号、位置...等)的主文件,我想使用命令行从主文件填充我的文件(我的子集文件有大约 300 万行)。

我在想类似 join 和 if then 语句,或 awk(或它们的某种组合)

例如,我有:

文件1

SNP A1  A2  Freq1.Hapmap    b   se  p   N
rs1000000 G A 0.6333 1e-04 0.0043 0.9814 233572
rs10000010 T C 0.575 -0.0022 0.0029 0.4384 339148

文件2

ID  SNP Chromosome  Position    REF Allele  ALT Allele  Contig  Contig Position Band    dbSNP
chr10:1175426:C/G:1 rs1000000 chr10 1175426 C G GL000093.1 1115426 p15.3 rs184435191
chr10:31133635:T/C:1 rs143579887 chr10 31133635 T C GL000093.1 31073635 p11.23 rs143579887
chr10:33247334:G/T:1 chr10:33247334:G/T:1 chr10 33247334 G T GL000093.1 33187334 p11.22
chr11:118230335:A/G:1 rs10000010 chr11 118230335 A G GL000104.1 21792751 q23.3 rs147754044
chr11:132968833:A/C:1 chr11:132968833:A/C:1 chr11 132968833 A C GL000104.1 36531249 q25
chr11:57678793:C/G:-1 rs77482717 chr11 57678793 C G GL000103.1 2984588 q12.1 rs77482717
chr11:61722645:C/A:1 chr11:61722645:C/A:1 chr11 61722645 C A GL000103.1 7028440 q12.3 rs1109748

我想要的:

SNP Chromosome  Position A1 A2  Freq1.Hapmap    b   se  p   N
rs1000000 chr10 1175426 G A 0.6333 1e-04 0.0043 0.9814 233572
rs10000010 chr11 118230335 T C 0.575 -0.0022 0.0029 0.4384 339148

最佳答案

假设您的文件是制表符分隔的:

$ awk 'BEGIN{FS=OFS="\t"}NR==FNR{a[$2]=$3 OFS $4;next}{$2=a[$1] OFS $2}1' file2 file1
SNP Chromosome Position A1 A2 Freq1.Hapmap b se p N
rs1000000 chr10 1175426 G A 0.6333 1e-04 0.0043 0.9814 233572
rs10000010 chr11 118230335 T C 0.575 -0.0022 0.0029 0.4384 339148

对于 file2 中的所有记录:将每个 SNP 与数组中相应的染色体和位置值关联,file1:从数组中检索与每个 SNP 关联的染色体和位置值并在第二列之前插入。

关于linux - 如何在 Linux 中从主数据填充子集数据字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55692636/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com