我对使用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