Saya memiliki kumpulan data harian deret waktu selama 10 tahun (1995-2004) dengan beberapa nilai yang hilang seperti 9999.00. Saya ingin menghitung rata-rata tahunan setiap tahun tanpa mempertimbangkan nilai yang hilang.
Saya dapat membuatnya dengan mempertimbangkan kalender 365 hari dengan perintah berikut
awk '!/\9999.00/{sum += $1; count++} NR%365==0{print count ? (sum) :9999.00;sum=count=0}'ifile
Tapi saya tidak bisa memodifikasi kalender tahun kabisat. Saya juga perlu menambahkan kolom lain dengan tahun. Output keinginan saya adalah sebagai
1995 annual_average
1996 annual_average
1997 annual_average
....
Misalnya: Saya memiliki data berikut dari tahun 1995-2000. Saya perlu menghitung rata-rata setiap 3 baris, bukan 365 dan 4 baris, bukan 366 jika ini adalah tahun kabisat:
3
3
4
9999.00
4
9999.00
13
3
9999.00
9999.00
9999.00
9999.00
9999.00
3
4
2
2
2.6
5.1
4.5
Perintah percobaan:
awk '!/\9999.00/{sum += $1; count++} NR%3==0{print count ? (sum) :9999.00;sum=count=0}'ifile
Keluaran keinginan:
1995 3.33
1996 8.5 it is a leap year, so average of 4 lines without considering missing values (4+13)/2
1997 3
1998 9999.00
1999 3
2000 3.55 leap year
NR%365==0
menjadicount ==DY-1
, dimana DY adalah variabel yang menyimpan jumlah hari pada tahun berjalan. Bagaimana cara menetapkan nilainya adalah apa yang harus Anda pecahkan. - person xvan   schedule 27.05.2016