私は持っています
Sample_A 100
Sample_A 200
Sample_B 300
Sample_B 100
1行の各キーについて、2行の値の平均を印刷したいと思います。
Sample_A 150
Sample_B 200
他の質問に対する優れた答えを使用して、行1の各キーに対して行2の値の合計を印刷できます。 2番目の列に基づいて最初の列の合計を取得します。
コマンドは次のとおりです。
awk 'NR { k = $1; cnt[k] += $2 } END { print; for (k in cnt) print k,cnt[k]}' File.txt
これは生産します
Sample_A 300
Sample_B 400
ただし、平均を計算するには、次のようにキー発生回数を保存する方法が必要です。
awk 'NR { k = $1; cnt[k] += $2; count(k)=$2} END { print; for (k in cnt) print k,cnt[k]/count(k)}' File.txt
しかし、私のcount(k)
コードは少し目が遠く動作しません。
ベストアンサー1
一緒にawk
できること:
awk '{seen[$1]+=$2; count[$1]++} END{for (x in seen)print x, seen[x]/count[x]}' infile
Sample_A 150
Sample_B 200
またはGNUを使用してくださいdatamash
:
datamash -t' ' --sort --group 1 mean 2 <infile
Sample_A 150
Sample_B 200