Столбец 2 суммы .csv файла, если столбец 1 является тем же

У меня есть файл CSV, где столбец 1 является названием гена, и столбец 2 является значением, связанным с тем геном. Однако некоторые гены имеют несколько значений, и я хочу суммировать значения столбца 2, если столбец 1 является тем же.

Так, если, например, у меня был некоторый файл test.csv это было похоже на это:

eee,55
ddd,60
eee,5
aaa,70
aaa,50
ddd,100
fff,30

Я хотел бы, чтобы это возвратилось:

eee,60
ddd,160
aaa,120
fff,30

Я пытался использовать

awk 'BEGIN { FS = OFS = "," }
        NR != 1 { y[$1] += $2; $2 = y[$1]; x[$1] = $0; }
        END { for (i in x) { print x[i]; } }'

Но вывод, который я получаю,

eee,5
fff,30
aaa,120
ddd,160

Почему это работает на каждое значение кроме eee's?

2
задан 10 August 2017 в 17:29

2 ответа

Похоже на пропуск несуществующего заголовка CSV: NR != 1. Без него:

$ awk 'BEGIN { FS = OFS = "," }
        { y[$1] += $2; $2 = y[$1]; x[$1] = $0; }
        END { for (i in x) { print x[i]; } }' foo
aaa,120
eee,60
ddd,160
fff,30
1
ответ дан 2 December 2019 в 04:48

Вы могли также иметь, покончили ниже awk.

awk -F, '{y[$1]+=$2}END{for (x in y) print x","y[x]}' in.txt
0
ответ дан 2 December 2019 в 04:48

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

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