【发布时间】:2020-06-23 23:00:35
【问题描述】:
我有一个制表符分隔符输入文件,如下所示:
Input:
4444 a b c 1 4444 1 4444
9990 a b c 1 6666 1 2222
9990 a b c 2 6667,6668 1 2223
1700 a b c 1 3333 1 8786
1700 a b c 1 4444 1 8787
1700 a b c 1 5555 1 8788
对于 $1,$2,$3,$4 中的每个唯一字符串,我需要添加 $5 并合并 $6 并添加 $7 并合并 $8,以便输出如下所示:
Output:
4444 a b c 1 4444 1 4444
9990 a b c 3 6666,6667,6668 2 2222,2223
1700 a b c 3 3333,4444,5555 3 8786,8787,8788
我认为这可能有一个现有的解决方案。有人可以在 awk/unix/R 中提供解决方案吗
【问题讨论】:
-
哇,这不是我所期望的最接近的原因。诚然,并没有一个与idownvotedbecau.se/noattempt 匹配的很好的如此接近的原因(我没有 DV,但是......我认为这不是不合理的)。
-
GNU datamash 解决方案:
datamash -g 1,2,3,4 sum 5 collapse 6 sum 7 collapse 8 < input.tsv(取决于您的示例中相邻的所有组;如果不添加-s到选项中)
标签: r awk merge duplicates