この質問にはすでに回答があります :最初の列に同じIDを持つデータの合計を計算するにはどうすればよいですか?
(4つの回答)
2年前に閉鎖されました。
Linux
(4つの回答)
2年前に閉鎖されました。
以下のようなテーブルデータがあります
abc 1 1 1
bcd 2 2 4
bcd 12 23 3
cde 3 5 5
cde 3 4 5
cde 14 2 25
最初の列の変数に基づいて各列の値の合計が必要で、望ましい結果は次のようになります。
abc 1 1 1
bcd 14 25 7
cde 20 11 35
このようなawkコマンドを使用しました
awk -F"\t" '{for(n=2;n<=NF; ++n)a[$1]+=$n}END{for(i in a ) print i, a[i] }' tablefilepath
以下の結果が得られました:
abc 3
bcd 46
cde 66
コードの終わりが間違っていると思いますが、修正方法がわかりません。
コードを修正するための指示が必要です。
承認された回答:
あなたはかなり近かった。
あなたはあなたが間違っていたことを理解していますね?
列1の値ごとに合計1つを保持していましたが、
3つ保持する必要がありました。
これはイニアンの答えに似ていますが、
ただし、任意の数の列を処理するために簡単に拡張できます:
awk -F"\t" '{for(n=2;n<=NF; ++n) a[$1][n]+=$n}
END {for(i in a) {
printf "%s", i
for (n=2; n<=4; ++n) printf "\t%s", a[i][n]
printf "\n"
}
}'
イニアンの答えのように3つの配列を保持するのではなく、
2次元の配列を保持します。