From 8a0397328b6230fd49724e1c6d91a5a545d2fb4b Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Sat, 13 Aug 2022 16:53:50 -0700 Subject: [PATCH] ROWLABELS=LAYER works --- src/language/stats/ctables.c | 20 ++++++ tests/language/stats/ctables.at | 120 +++++++++++++++++++++++++++++++- 2 files changed, 138 insertions(+), 2 deletions(-) diff --git a/src/language/stats/ctables.c b/src/language/stats/ctables.c index e5a1ca5b19..812e6b3a8a 100644 --- a/src/language/stats/ctables.c +++ b/src/language/stats/ctables.c @@ -4688,6 +4688,16 @@ ctables_prepare_table (struct ctables_table *t) break; } } + else if (at == CTAT_LAYERCOL && a == PIVOT_AXIS_ROW && t->label_axis[PIVOT_AXIS_ROW] == PIVOT_AXIS_LAYER) + { + for (size_t k = nest->n - 1; k < nest->n; k--) + { + if (k == nest->scale_idx) + continue; + nest->areas[at][nest->n_areas[at]++] = k; + break; + } + } else if (at == CTAT_LAYERROW && a == PIVOT_AXIS_COLUMN && t->label_axis[PIVOT_AXIS_COLUMN] == PIVOT_AXIS_ROW) { for (size_t k = nest->n - 1; k < nest->n; k--) @@ -4772,6 +4782,16 @@ ctables_prepare_table (struct ctables_table *t) } continue; } + else if (at == CTAT_COL && a == PIVOT_AXIS_ROW && t->label_axis[PIVOT_AXIS_ROW] == PIVOT_AXIS_LAYER) + { + size_t n = nest->n_areas[at]; + if (n > 1) + { + nest->areas[at][n - 2] = nest->areas[at][n - 1]; + nest->n_areas[at]--; + } + continue; + } bool drop_last = (at == CTAT_SUBTABLE ? a != PIVOT_AXIS_LAYER : at == CTAT_ROW ? a == PIVOT_AXIS_COLUMN diff --git a/tests/language/stats/ctables.at b/tests/language/stats/ctables.at index 9c9cc3e1cc..6201e847fa 100644 --- a/tests/language/stats/ctables.at +++ b/tests/language/stats/ctables.at @@ -3832,8 +3832,8 @@ CTABLES /CLABELS ROWLABELS=LAYER /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[ROWID, LAYERROWID] /SLABELS POSITION=ROW - /CLABELS ROWLABELS=LAYER. -* /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[COLID, LAYERCOLID] + /CLABELS ROWLABELS=LAYER + /TABLE qn26 > qn61 > qn57 BY qn27 > qnd7a > qn86 BY qns3a[COLID, LAYERCOLID] /SLABELS POSITION=ROW /CLABELS ROWLABELS=LAYER. ]]) @@ -4085,6 +4085,122 @@ No │ No QN57 Row ID │ 57│57│ 60│60│ 61│61│ 64│64│ │ Layer Row ID│ 15│15│ 15│15│ 15│15│ 15│15│ ╰───────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Male +Yes +╭──────────────────────────────────────┬───────────────────────────╮ +│ │ QN27 │ +│ ├─────────────┬─────────────┤ +│ │ Yes │ No │ +│ ├─────────────┼─────────────┤ +│ │ QND7A │ QND7A │ +│ ├──────┬──────┼──────┬──────┤ +│ │ Yes │ No │ Yes │ No │ +│ ├──────┼──────┼──────┼──────┤ +│ │ QN86 │ QN86 │ QN86 │ QN86 │ +│ ├───┬──┼───┬──┼───┬──┼───┬──┤ +│ │Yes│No│Yes│No│Yes│No│Yes│No│ +├──────────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│QN26 Yes QN61 Yes QN57 Column ID │ 1│ 4│ 6│ 8│ 9│11│ 14│15│ +│ Layer Column ID│ 1│ 4│ 6│ 8│ 9│11│ 14│15│ +│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Column ID │ 1│ 4│ 6│ 8│ 9│11│ 14│15│ +│ Layer Column ID│ 1│ 4│ 6│ 8│ 9│11│ 14│15│ +│ ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN61 Yes QN57 Column ID │ 18│19│ 22│23│ 25│27│ 29│32│ +│ Layer Column ID│ 1│ 4│ 6│ 8│ 9│11│ 14│15│ +│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Column ID │ 18│19│ 22│23│ 25│27│ 29│32│ +│ Layer Column ID│ 1│ 4│ 6│ 8│ 9│11│ 14│15│ +╰──────────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Male +No +╭──────────────────────────────────────┬───────────────────────────╮ +│ │ QN27 │ +│ ├─────────────┬─────────────┤ +│ │ Yes │ No │ +│ ├─────────────┼─────────────┤ +│ │ QND7A │ QND7A │ +│ ├──────┬──────┼──────┬──────┤ +│ │ Yes │ No │ Yes │ No │ +│ ├──────┼──────┼──────┼──────┤ +│ │ QN86 │ QN86 │ QN86 │ QN86 │ +│ ├───┬──┼───┬──┼───┬──┼───┬──┤ +│ │Yes│No│Yes│No│Yes│No│Yes│No│ +├──────────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│QN26 Yes QN61 Yes QN57 Column ID │ 2│ 3│ 5│ 7│ 10│12│ 13│16│ +│ Layer Column ID│ 2│ 3│ 5│ 7│ 10│12│ 13│16│ +│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Column ID │ 2│ 3│ 5│ 7│ 10│12│ 13│16│ +│ Layer Column ID│ 2│ 3│ 5│ 7│ 10│12│ 13│16│ +│ ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN61 Yes QN57 Column ID │ 17│20│ 21│24│ 26│28│ 30│31│ +│ Layer Column ID│ 2│ 3│ 5│ 7│ 10│12│ 13│16│ +│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Column ID │ 17│20│ 21│24│ 26│28│ 30│31│ +│ Layer Column ID│ 2│ 3│ 5│ 7│ 10│12│ 13│16│ +╰──────────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Female +Yes +╭──────────────────────────────────────┬───────────────────────────╮ +│ │ QN27 │ +│ ├─────────────┬─────────────┤ +│ │ Yes │ No │ +│ ├─────────────┼─────────────┤ +│ │ QND7A │ QND7A │ +│ ├──────┬──────┼──────┬──────┤ +│ │ Yes │ No │ Yes │ No │ +│ ├──────┼──────┼──────┼──────┤ +│ │ QN86 │ QN86 │ QN86 │ QN86 │ +│ ├───┬──┼───┬──┼───┬──┼───┬──┤ +│ │Yes│No│Yes│No│Yes│No│Yes│No│ +├──────────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│QN26 Yes QN61 Yes QN57 Column ID │ 33│36│ 37│39│ 42│44│ 45│47│ +│ Layer Column ID│ 17│20│ 21│23│ 26│28│ 29│31│ +│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Column ID │ 33│36│ 37│39│ 42│44│ 45│47│ +│ Layer Column ID│ 17│20│ 21│23│ 26│28│ 29│31│ +│ ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN61 Yes QN57 Column ID │ 49│51│ 54│56│ 57│60│ 62│64│ +│ Layer Column ID│ 17│20│ 21│23│ 26│28│ 29│31│ +│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Column ID │ 49│51│ 54│56│ 57│60│ 62│64│ +│ Layer Column ID│ 17│20│ 21│23│ 26│28│ 29│31│ +╰──────────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯ + + Custom Tables +Female +No +╭──────────────────────────────────────┬───────────────────────────╮ +│ │ QN27 │ +│ ├─────────────┬─────────────┤ +│ │ Yes │ No │ +│ ├─────────────┼─────────────┤ +│ │ QND7A │ QND7A │ +│ ├──────┬──────┼──────┬──────┤ +│ │ Yes │ No │ Yes │ No │ +│ ├──────┼──────┼──────┼──────┤ +│ │ QN86 │ QN86 │ QN86 │ QN86 │ +│ ├───┬──┼───┬──┼───┬──┼───┬──┤ +│ │Yes│No│Yes│No│Yes│No│Yes│No│ +├──────────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│QN26 Yes QN61 Yes QN57 Column ID │ 34│35│ 38│40│ 41│43│ 46│48│ +│ Layer Column ID│ 18│19│ 22│24│ 25│27│ 30│32│ +│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Column ID │ 34│35│ 38│40│ 41│43│ 46│48│ +│ Layer Column ID│ 18│19│ 22│24│ 25│27│ 30│32│ +│ ╶─────────────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN61 Yes QN57 Column ID │ 50│52│ 53│55│ 58│59│ 61│63│ +│ Layer Column ID│ 18│19│ 22│24│ 25│27│ 30│32│ +│ ╶────────────────────────┼───┼──┼───┼──┼───┼──┼───┼──┤ +│ No QN57 Column ID │ 50│52│ 53│55│ 58│59│ 61│63│ +│ Layer Column ID│ 18│19│ 22│24│ 25│27│ 30│32│ +╰──────────────────────────────────────┴───┴──┴───┴──┴───┴──┴───┴──╯ ]) AT_CLEANUP -- 2.30.2