我正在尝试转置和取消堆叠一个巨大的文本数据库(制表符分隔)。
我的数据看起来像这样:
rs1 5 AB
rs2 5 BB
rs3 5 AA
rs1 6 BB
rs2 6 AA
rs3 6 AB
rs1 7 AA
rs2 7 AB
rs3 7 BB
我想把它变成:
rs1 rs2 rs3
5 AB BB AA
6 BB AA AB
7 AA AB BB
非常感谢任何可以提供帮助的人。
卢卡
我正在尝试转置和取消堆叠一个巨大的文本数据库(制表符分隔)。
我的数据看起来像这样:
rs1 5 AB
rs2 5 BB
rs3 5 AA
rs1 6 BB
rs2 6 AA
rs3 6 AB
rs1 7 AA
rs2 7 AB
rs3 7 BB
我想把它变成:
rs1 rs2 rs3
5 AB BB AA
6 BB AA AB
7 AA AB BB
非常感谢任何可以提供帮助的人。
卢卡
这是使用 gawk 的一种方法。看起来很痛苦,我相信有更好的方法可以做到这一点,但 FWIW
awk -F'\t' 'BEGIN{PROCINFO["sorted_in"] = "@ind_str_asc"};
{arr[$1, $2] = $3; arr1[$1]; arr2[$2]};
END{
for(x in arr1){printf " "x;} {print ""};
for(y in arr2){printf y" ";for(x in arr1) printf " "arr[x, y]; print ""}
}' input_file