summaryrefslogtreecommitdiff
path: root/diff.awk
diff options
context:
space:
mode:
authorwukong <wukong@longaeva>2018-06-15 09:17:23 -0700
committerwukong <wukong@longaeva>2018-06-15 09:17:23 -0700
commitce5e0a8f088e19e8ebe9a27d8efd4207363791af (patch)
tree6c325b3b995f984e19418ede16cfa5e5a5c9c2f0 /diff.awk
parente8e5644e677af6eac9361902d24e8df72bc2902c (diff)
fixed row 1 header issue in diff.awk; other small adjustments in hamming and lin_reg
Diffstat (limited to 'diff.awk')
-rw-r--r--diff.awk46
1 files changed, 26 insertions, 20 deletions
diff --git a/diff.awk b/diff.awk
index 6dc427d..fb93b57 100644
--- a/diff.awk
+++ b/diff.awk
@@ -4,6 +4,7 @@
# numerical diff along columns
BEGIN {
+ OFMT = "%.9g"
sign = "[+-]?"
decimal = "[0-9]+[.]?[0-9]*"
fraction = "[.][0-9]*"
@@ -12,44 +13,49 @@ BEGIN {
}
NR == 1 {
- header_nf = NF
+ ### orig columns
for (n=1; n<=NF; n++) {
- printf("%s", $n)
- ($n !~ number) ? dheader[n] = "d" $n : dheader[n] = "dcol_" n
+ ($n !~ number) ? header[n] = $n : header[n] = "col" n
+ printf(header[n])
+ ($n !~ number) ? dheader[n] = "d" $n : dheader[n] = "dcol" n
if (n <= NF)
- printf("%s", OFS)
+ printf(OFS)
}
+ ### diff columns
for (n=1; n<=NF; n++) {
- printf("%s", dheader[n])
+ printf(dheader[n])
if (n < NF)
- printf("%s", OFS)
+ printf(OFS)
}
}
-NF != 0 {
- if (NF > max_nf)
- max_nf = NF
+NF {
+ if (NF > nf_max)
+ nf_max = NF
- ### iterate over columns
- for (y=1; y<=max_nf; y++) {
- if (match(dheader[y], $y))
+ ### orig columns
+ for (y=1; y<=nf_max; y++) {
+ if ($y == header[y] || $y == dheader[y])
continue
if ($y ~ number)
- printf("%g", $y)
- if (y <= max_nf)
- printf("%s", OFS)
+ printf($y)
+ else
+ printf("")
+ printf(OFS)
}
- for (y=1; y<=max_nf; y++) {
+ ### diff columns
+ for (y=1; y<=nf_max; y++) {
if ($y ~ number) {
data[y] = $y
- (data_prev[y] ~ number) ? diff[y] = data[y] - data_prev[y] : diff[y] = "nan"
+ (data_prev[y] ~ number) ? diff[y] = data[y] - data_prev[y] : diff[y] = ""
data_prev[y] = data[y]
- printf("%g", diff[y])
- if (y < max_nf)
- printf("%s", OFS)
+ printf(diff[y])
+ if (y < nf_max)
+ printf(OFS)
}
+ diff[y] = ""
}
printf("\n")
}