合并具有相同行名称的值

合并具有相同行名称的值

我有一个像这样的表:

   Genes     Category
1. Gene1     dark_11
2. Gene1     dark_9
3. Gene2     dark_7
4. Gene1     dark_5

我想将列Category中以逗号分隔的值与相同的行名称合并Genes以获得如下输出:

   Genes      Category
1. Gene1      dark_11, dark_9, dark_5
2. Gene2      dark_7

任何帮助将不胜感激。

答案1

您可以使用 awk 数组按要满足的条件进行索引,然后将每个关联的类别附加到数组的每个值,例如:

awk 'NR==1 {print $0}; NR>1 {if(cat[$2])cat[$2]=cat[$2]", "$3; else cat[$2]=$3;}; END{j=1; for (i in cat) print j++".", i, cat[i]}' test.txt

test.txt你的输入文件。

cat数组将包含两个值,cat[GeneX]其中将包含一个字符串,其中包含每个基因连接的类别。请注意,在将类别添加到数组的正确值之前,您必须检查数组是否为空,只需在类别之间添加逗号即可。

相关内容