break;
case CTSF_MEAN:
+ case CTSF_SUM:
+ case CTSF_areaPCT_SUM:
+ s->moments = moments1_create (MOMENT_MEAN);
+ break;
+
case CTSF_SEMEAN:
case CTSF_STDDEV:
- case CTSF_SUM:
case CTSF_VARIANCE:
- case CTSF_areaPCT_SUM:
s->moments = moments1_create (MOMENT_VARIANCE);
break;
case CTSF_STDDEV:
case CTSF_SUM:
case CTSF_VARIANCE:
- case CTSF_areaPCT_SUM:
if (!is_scale_missing)
moments1_add (s->moments, value->f, ss->weighted ? e_weight : 1.0);
break;
+ case CTSF_areaPCT_SUM:
+ if (!is_missing && !is_scale_missing)
+ moments1_add (s->moments, value->f, ss->weighted ? e_weight : 1.0);
+ break;
+
case CTSF_MEDIAN:
case CTSF_MODE:
case CTSF_PTILE:
for (size_t i = 0; i < nest->n; i++)
hmap_init (&s->occurrences[a][i]);
}
- for (size_t i = 0; i < N_CTATS; i++)
- hmap_init (&s->areas[i]);
+ for (enum ctables_area_type at = 0; at < N_CTATS; at++)
+ hmap_init (&s->areas[at]);
}
}
atb = PIVOT_AXIS_ROW;
}
- if (((at == CTAT_LAYERCOL || at == CTAT_LAYERROW)
- && a == atb && t->label_axis[a] != a)
- || (at == CTAT_LAYER
- && a != PIVOT_AXIS_LAYER
- && t->label_axis[a] == PIVOT_AXIS_LAYER))
+ if (at == CTAT_LAYER
+ ? a != PIVOT_AXIS_LAYER && t->label_axis[a] == PIVOT_AXIS_LAYER
+ : at == CTAT_LAYERCOL || at == CTAT_LAYERROW
+ ? a == atb && t->label_axis[a] != a
+ : false)
{
for (size_t k = nest->n - 1; k < nest->n; k--)
if (k != nest->scale_idx)
continue;
}
- if (at == CTAT_LAYER ? a == PIVOT_AXIS_LAYER
- : at == CTAT_LAYERROW || at == CTAT_LAYERCOL ? a != atb
- : at == CTAT_TABLE ? false
- : true)
- for (size_t k = 0; k < nest->n; k++)
- {
- if (k == nest->scale_idx)
- continue;
- nest->areas[at][nest->n_areas[at]++] = k;
- }
+ if (at == CTAT_LAYER ? a != PIVOT_AXIS_LAYER
+ : at == CTAT_LAYERROW || at == CTAT_LAYERCOL ? a == atb
+ : at == CTAT_TABLE ? true
+ : false)
+ continue;
- int n_drop = 0;
+ for (size_t k = 0; k < nest->n; k++)
+ if (k != nest->scale_idx)
+ nest->areas[at][nest->n_areas[at]++] = k;
+
+ int n_drop;
switch (at)
{
case CTAT_SUBTABLE:
- if (t->clabels_from_axis == PIVOT_AXIS_LAYER)
- n_drop = a != PIVOT_AXIS_LAYER;
- else if (t->clabels_to_axis != PIVOT_AXIS_LAYER)
- n_drop = a == t->clabels_from_axis ? 2 : 0;
- else if (a == t->clabels_from_axis)
- n_drop = -1;
- else
- n_drop = a != PIVOT_AXIS_LAYER;
+#define L PIVOT_AXIS_LAYER
+ n_drop = (t->clabels_from_axis == L ? a != L
+ : t->clabels_to_axis == L ? (t->clabels_from_axis == a ? -1 : a != L)
+ : t->clabels_from_axis == a ? 2
+ : 0);
+#undef L
break;
case CTAT_LAYERROW:
case CTAT_ROW:
case CTAT_COL:
- if (a == atb)
- {
- if (t->clabels_from_axis == atb)
- n_drop = -1;
- else if (t->clabels_to_axis != atb)
- n_drop = 1;
- }
- else if (a == ata)
- n_drop = t->label_axis[ata] == atb;
+ n_drop = (a == ata ? t->label_axis[ata] == atb
+ : a != atb ? 0
+ : t->clabels_from_axis == atb ? -1
+ : t->clabels_to_axis != atb ? 1
+ : 0);
break;
case CTAT_LAYER:
case CTAT_TABLE:
+ n_drop = 0;
break;
}
}
hmap_destroy (&s->cells);
- for (size_t i = 0; i < N_CTATS; i++)
- hmap_destroy (&s->areas[i]);
+ for (enum ctables_area_type at = 0; at < N_CTATS; at++)
+ hmap_destroy (&s->areas[at]);
}
static void