Как найти те же строки и объединить значения?

У меня есть следующая табличная разделенная таблица:

NM_000057   0
NM_000059   0
NM_000060   0
NM_000061   0
NM_000062   0
NM_000063   0
NM_000063   0
NM_000063   3
NM_000063   2
NM_000063   0
NM_000063   0
NM_000063   0
NM_000064   0
NM_000065   0
NM_000066   0
NM_000067   0
NM_000068   0
NM_000069   0
NM_000070   0

Я хочу искать первое значение, если существует больше чем один равный, я хочу объединить его и добавить значения из второго столбца. В примере:

NM_000057   0
NM_000059   0
NM_000060   0
NM_000061   0
NM_000062   0
**NM_000063 5**
NM_000064   0
NM_000065   0
NM_000066   0
NM_000067   0
NM_000068   0
NM_000069   0
NM_000070   0

Спасибо!

4
задан 26 September 2016 в 13:23

2 ответа

Недавно обнаружив GNU Датамаш , я собираюсь добавить

datamash groupby 1 sum 2 < input

, Если Ваши данные уже не отсортированы, Вы, возможно, должны добавить -s опция, и если это разделяется другим пробелом (вместо вкладок), добавьте -W

1
ответ дан 1 December 2019 в 10:01

Используйте 'awk',

awk '{seen[$1]+=$2} END{for (x in seen) print x, seen[x]}' infile > outfile

В вышеупомянутом awk команда, основная этот 'замеченный [1$] + =' часть за 2$, делают задание, переменный 1$ как ключевое поле, суммируя значение второго столбца когда подобранный замеченный ключ.

И в конце, мы - цикличное выполнение по замеченному массиву с x как переменная и печатаем ключи, замеченные в первом столбце затем результат суммы каждого ключа замеченным [x].

2
ответ дан 1 December 2019 в 10:01

Другие вопросы по тегам:

Похожие вопросы: