summaryrefslogtreecommitdiff
path: root/mean_avg.awk
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--mean_avg.awk9
1 files changed, 5 insertions, 4 deletions
diff --git a/mean_avg.awk b/mean_avg.awk
index e4596b0..bef984d 100644
--- a/mean_avg.awk
+++ b/mean_avg.awk
@@ -20,7 +20,7 @@ NR == 1 {
}
# Welford's 'online' algorithm for variance
-NF > 0 {
+NF {
if (NF > max_nf)
max_nf = NF
for (n=1; n <= NF; n++) {
@@ -28,6 +28,7 @@ NF > 0 {
count[n] += 1
(count[n] == 1 || $n < min[n]) ? min[n] = $n : min[n] = min[n]
(count[n] == 1 || $n > max[n]) ? max[n] = $n : max[n] = max[n]
+ range[n] = max[n] - min[n]
delta0[n] = $n - mean[n]
mean[n] += delta0[n]/count[n]
delta1[n] = $n - mean[n]
@@ -38,12 +39,12 @@ NF > 0 {
}
END {
- print "col", "mean", "std_err", "std_dev", "min", "max", "total", "count"
+ print "col", "mean", "std_err", "std_dev", "range", "min", "max", "total", "count"
for (n=1; n<=max_nf; n++) {
if (header[n])
- print header[n], mean[n], sqrt(var[n]/count[n]), sqrt(var[n]), min[n], max[n], mean[n]*count[n], count[n]
+ print header[n], mean[n], sqrt(var[n]/count[n]), sqrt(var[n]), range[n], min[n], max[n], mean[n]*count[n], count[n]
else
- print "col" n, mean[n], sqrt(var[n]/count[n]), sqrt(var[n]), min[n], max[n], mean[n]*count[n], count[n]
+ print "col" n, mean[n], sqrt(var[n]/count[n]), sqrt(var[n]), range[n], min[n], max[n], mean[n]*count[n], count[n]
}
}