列之间的匹配 [英] Match between the columns
本文介绍了列之间的匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有两个文件。首先,我想看看第一个文件中的&Quot;Variant_Type&Quot;列。如果是DEL,那么我应该检查两个文件(染色体、VCF_pos、Reference_Allele)中的三个列是否匹配,并将第一个文件中的AC和AF列追加到第二个文件中。如果它位于";Variant_Type";中,则查找两个文件中的另外三列(染色体、VCF_pos、Tumor_Seq_Allele2)之间的匹配项,并附加第二个文件中相关的AC和AF列。如果是SNP,则再次查找两个文件(染色体、VCF_pos、Tumor_Seq_Allele2)中另外三列之间的匹配项,并追加第二个文件中相关的AC和AF列。
这是文件1的摘录
Hugo_Symbol Chromosome Start_Position End_Position Reference_Allele Tumor_Seq_Allele2 Variant_Type vcf_pos
TMEM80 chr11 704605 704605 A - DEL 704604
OR52P1P chr11 5726537 5726537 T - DEL 5726536
UBTFL1 chr11 90086720 90086721 - T INS 90086720
DCPS chr11 126306583 126306584 - TGGGGA INS 126306583
DCPS chr11 126306583 126306584 - TGGGGAAA INS 126306583
文件%2
Chromosome vcf_pos AF AC Reference_Allele Tumor_Seq_Allele2
chr11 704604 0.2 10 A -
chr11 5726536 0.35 13 T -
chr11 90086720 0.25 16 - T
chr11 126306583 0.5 29 - TGGGGA
chr11 126306583 0.3 39 - TGGGGAAA
所需输出
Hugo_Symbol Chromosome Start_Position End_Position Reference_Allele Tumor_Seq_Allele2 Variant_Type vcf_pos AF AC
TMEM80 chr11 704605 704605 A - DEL 704604 0.2 10
OR52P1P chr11 5726537 5726537 T - DEL 5726536 0.35 13
UBTFL1 chr11 90086720 90086721 - T INS 90086720 0.25 16
DCPS chr11 126306583 126306584 - TGGGGA INS 126306583 0.5 29
DCPS chr11 126306583 126306584 - TGGGGAAA INS 126306583 0.3 39
作为一种可能的解决方案,我考虑在R中使用合并功能,但使用awk可能会更好
推荐答案
使用awk可能会更好
仅供比较-解决方案awk
:
awk 'BEGIN { while (getline <"File 2" > 0) # make "dictionary" of AF, AC for ...
{ AFAC1[$1","$2","$5] = $3" "$4 # ... Chr., vcf. and Reference_Allele
AFAC2[$1","$2","$6] = $3" "$4 # ... Chr., vcf. and Tumor_Seq_Allele2
}
}
NR==1 { print $0" AF AC" } # first line has column headers
$7=="DEL" { print $0, AFAC1[$2","$8","$5] }# append the 1st stored AF, AC
$7=="INS"||
$7=="SNP" { print $0, AFAC2[$2","$8","$6] }# append the 2nd stored AF, AC
' "File 1"
这篇关于列之间的匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文