Как получить среднее значение различных значений столбца, когда один столбец соответствует значению - PullRequest
0 голосов
/ 21 января 2019

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

Например, если $19=9.1, то получите среднее значение $24, $25, $27,$28, $32 и $35 и запишите эти значения в файл, например

9.1 (mean$24) (mean$25) ..... (mean$32) (mean$35)

, и добавьте еще две строки для двух других значений столбца $ 19, например, 11,9 и 13,9, получив в результате:

9.1  (mean$24) (mean$25) ..... (mean$32) (mean$35)
11.9 (mean$24) (mean$25) ..... (mean$32) (mean$35)
13.9 (mean$24) (mean$25) ..... (mean$32) (mean$35)

Я видел сообщение "awk средняя часть столбца, если строки (определенное поле) совпадают" , которое составляет среднее значение только для одного столбца, если первый имеет некоторое значение,но я не знаю, как расширить решение моей проблемы.

1 Ответ

0 голосов
/ 21 января 2019

это должно работать, если вы заполняете пробелы ...

$ awk 'BEGIN {n=split("1.9 11.9 13.9",a)} 
             {k=$19; c[k]++; m24[k]+=$24; m25[k]+=$25; ...}
         END {for(i=1;i<=n;i++) print k=a[i], m24[k]/c[k], m25[k]/c[k], ...}' file

возможно, обрабатывает c[k]=0 условие, с чем-то вроде этого:

function mean(sum,count) {return (count==0?"NaN":sum/count)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...