Добавьте столбец с той же ключевой функцией в CSV-файл

Столбцы, включающие два ключевых признака, один столбец для суммирования и некоторые другие (например,1) столбец, который не важен.

key1, key 2, pr, trivial    
abc, 43, 23, haha    
abc, 43, 456, hok    
bcd, 23, 89,kol

Я хочу добавить столбец суммы с тем же ключом key1 и key2 и вывести файл csv с 3 столбцами.

key1, key2, sumvalueofpr

в приведенном выше случае это

key1, key2, sumvalueofpr
abc , 43, 479
bdc, 23, 89

(нота: 479=23+456)

Работать с командой Perl или Shell можно.

2 ответа

Есть только определенное значение пар ключ1/ ключ2 или вы хотите проверить наличие возможных совпадений?

Вы могли бы сделать метод с более низкой производительностью (но легко кодировать), вы можете попробовать такой метод:

for i in range(0,number_of_rows):
   for j in range(i+1, number_of_rows):
        if (key1_from_row_i == key1_from_row_j) and (if (key1_from_row_i == key1_from_row_j)):
             increment your sum of key1_sum key2_sum

Если awk принят вами, эта строка содержит ожидаемый результат:

awk -F, -v OFS=", " 'NR==1{print "key1","key2","sum";next}{a[$1", "$2]+=$3}END{for(x in a)print x,a[x]}' file
Другие вопросы по тегам