GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Mendapatkan Jumlah Nilai Dalam Kolom Berdasarkan Variabel Di Kolom Lain Secara Terpisah??

Pertanyaan ini sudah memiliki jawaban di sini :Bagaimana cara menghitung jumlah data yang beridentitas sama pada kolom pertama?

(4 jawaban)
Tutup 2 tahun yang lalu.

Saya memiliki data tabel seperti di bawah ini

abc 1   1   1
bcd 2   2   4
bcd 12  23  3
cde 3   5   5
cde 3   4   5
cde 14  2   25

Saya ingin jumlah nilai di setiap kolom berdasarkan variabel di kolom pertama dan hasil yang diinginkan seperti di bawah ini:

abc 1   1   1
bcd 14  25  7
cde 20  11  35

Saya menggunakan perintah awk seperti ini

awk -F"\t" '{for(n=2;n<=NF; ++n)a[$1]+=$n}END{for(i in a ) print i, a[i] }' tablefilepath

dan saya mendapat hasil di bawah ini:

abc 3
bcd 46
cde 66

Saya rasa akhir kode saya salah tetapi tidak tahu cara memperbaikinya.
Saya memerlukan beberapa petunjuk untuk memperbaiki kode.

Jawaban yang Diterima:

Anda cukup dekat.
Anda lihat apa yang Anda lakukan salah, bukan?
Anda menyimpan satu total untuk setiap nilai 1 kolom,
padahal seharusnya Anda menyimpan tiga.

Ini mirip dengan jawaban Inian,
tetapi dapat diperluas secara sepele untuk menangani sejumlah kolom:

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"
             }
        }'

Daripada menyimpan tiga larik, seperti jawaban Inian,
ia menyimpan larik dua dimensi.


Linux
  1. Bagaimana cara mendapatkan ID proses dari proses latar belakang?

  2. Bagaimana cara mengurutkan file, berdasarkan nilai numeriknya untuk suatu bidang?

  3. Cara mendapatkan penggunaan CPU

  1. Bagaimana saya bisa mendapatkan nilai unik dari array di Bash?

  2. Bagaimana cara mendapatkan ps untuk mencetak grup?

  3. Bagaimana cara menggunakan variabel atom di C?

  1. Betapa tidak disetelnya banyak variabel lingkungan

  2. Memindahkan tempat sampah dan folder lain! Bagaimana cara mendapatkannya kembali?

  3. Menggunakan awk untuk menjumlahkan nilai kolom, berdasarkan nilai kolom lain