我對使用awk非常陌生,但我在Fredrik Pihl的關於如何計算字段的平均值($ 3)的這個問題的答案中找到了很多幫助,在共享另一個字段($ 1)多條記錄:如果特定字段匹配的行的awk差異
問題:在awk列的平均一部分,如果線路(具體場)比賽
輸入樣本:
$cat NDVI-bm
P01 031.RAW 0.516 0 0
P01 021.RAW 0.449 0 0
P02 045.RAW 0.418 0 0
P03 062.RAW 0.570 0 0
P03 064.RAW 0.469 0 0
P04 083.RAW 0.636 0 0
P04 081.RAW 0.592 0 0
P04 082.RAW 0.605 0 0
P04 084.RAW 0.648 0 0
P05 093.RAW 0.748 0 0
弗雷德裏克皮赫爾的回答是:
{
sum[$1]+=$3
cnt[$1]++
}
END {
print "Name" "\t" "sum" "\t" "cnt" "\t" "avg"
for (i in sum)
print i "\t" sum[i] "\t" cnt[i] "\t" sum[i]/cnt[i]
}
但是,我被卡住了也試圖計算匹配字段(每個值和平均值之間的差異的平方的總和除以計數)的方差。我想我可能需要一種方法來計算每個匹配記錄的END結構之前的平均值,或者如果可以在END結構中完成整個方差計算,但是我需要檢索原始值$ 3。我不知道該怎麼做。感謝任何提示。
如果你發佈你想要的輸出將會有所幫助 –
如果你捐贈的獎金可能會有所幫助。 – captcha
@JS웃和parkydr:謝謝。 – KaH