ゲノム座標と最後の列が一般名である3つのファイルがあります。
ファイル1.
X 1 100 B
Y 101 200 B
Z 1 50 B
ファイル2.
X 200 300 A
Y 101 200 A
Z 1 50 A
ファイル3.
X 1 100 C
Y 200 300 C
Z 1 50 C
最後の列に基づいてデータを計算したいと思います。
Name Value1 Value2 A B C
X 1 100 No Yes Yes
X 200 300 Yes No No
Y 101 200 Yes Yes No
Y 200 300 No No Yes
Z 1 50 Yes Yes Yes
.. このように。
助けてもらえますか?
ベストアンサー1
アッ解決策:
awk 'function get_mask(keys){
mask="";
for(i in h) {
res=(keys~i)?"Yes":"No"; mask=(mask!="")? mask FS res:res
}
return mask
}
{ k=$1 FS $2 FS $3 }{ h[$4]; a[k]=(a[k])? a[k]$4:$4 }
END{
h_line=""; for(i in h) h_line=(h_line=="")? i:h_line FS i;
printf "Name Value1 Value2 %s\n",h_line;
for(j in a) printf "%s %s\n", j, get_mask(a[j])
}' file{1,2,3}
出力:
Name Value1 Value2 A B C
Z 1 50 Yes Yes Yes
Y 101 200 Yes Yes No
Y 200 300 No No Yes
X 1 100 No Yes Yes
X 200 300 Yes No No