diff options
Diffstat (limited to '')
| -rw-r--r-- | mean.awk | 17 |
1 files changed, 9 insertions, 8 deletions
@@ -5,20 +5,21 @@ BEGIN {
OFS = FS
- sign = "[+-]?"
- decimal = "[0-9]+[.]?[0-9]*"
- fraction = "[.][0-9]+"
- exponent = "([Ee]" sign "[0-9]+)?"
- number = "^" sign "(" decimal "|" fraction ")" exponent "$"
+ #sign = "[+-]?"
+ #decimal = "[0-9]+[.]?[0-9]*"
+ #fraction = "[.][0-9]*"
+ #exponent = "([Ee]" "[+-]?" "[0-9]+)?"
+ number = "^[+-]?([0-9]+[.]?[0-9]*|[.][0-9]*)([Ee][+-]?[0-9]+)?$"
}
# Welford's 'online' algorithm for variance
-NF > 0 {
+NF {
for (n=1; n<=NF; n++) {
if ($n ~ number) {
count += 1
(count == 1 || $n < min) ? min = $n : min = min
(count == 1 || $n > max) ? max = $n : max = max
+ range = max - min
delta0 = $n - mean
mean += delta0/count
delta1 = $n - mean
@@ -29,7 +30,7 @@ NF > 0 { }
END {
- print "mean", "std_err", "std_dev", "min", "max", "total", "count"
- print mean, sqrt(var/count), sqrt(var), min, max, (mean*count), count
+ print "mean", "std_err", "std_dev", "range", "min", "max", "total", "count"
+ print mean, sqrt(var/count), sqrt(var), range, min, max, (mean*count), count
}
|
