MEANS: Change the statistic formats to follow their respective variables
authorJohn Darrington <john@darrington.wattle.id.au>
Sun, 23 Jun 2019 15:57:30 +0000 (17:57 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Sun, 23 Jun 2019 15:57:30 +0000 (17:57 +0200)
src/language/stats/means-calc.c
src/language/stats/means.c
tests/language/stats/means.at

index 7e5142fd7809e72c6b88a77330fd6beca66d1e81..5a3c205b97788d3672c09d238e68ab8058d597d3 100644 (file)
@@ -423,29 +423,29 @@ first_get (const struct statistic *pvd)
 
 /* Table of cell_specs */
 const struct cell_spec cell_spec[n_MEANS_STATISTICS] = {
-  {N_("Mean"),           "MEAN",      PIVOT_RC_OTHER,   default_create,   default_update,   arithmean_get, default_destroy},
+  {N_("Mean"),           "MEAN",      NULL          ,   default_create,   default_update,   arithmean_get, default_destroy},
   {N_("N"),              "COUNT",     PIVOT_RC_COUNT,   default_create,   default_update,   n_get,         default_destroy},
-  {N_("Std. Deviation"), "STDDEV",    PIVOT_RC_OTHER,   default_create,   default_update,   stddev_get,    default_destroy},
+  {N_("Std. Deviation"), "STDDEV",    NULL          ,   default_create,   default_update,   stddev_get,    default_destroy},
 #if 0
-  {N_("Median"),         "MEDIAN",    PIVOT_RC_OTHER,   default_create,   default_update,   NULL,          default_destroy},
-  {N_("Group Median"),   "GMEDIAN",   PIVOT_RC_OTHER,   default_create,   default_update,   NULL,          default_destroy},
+  {N_("Median"),         "MEDIAN",    NULL          ,   default_create,   default_update,   NULL,          default_destroy},
+  {N_("Group Median"),   "GMEDIAN",   NULL          ,   default_create,   default_update,   NULL,          default_destroy},
 #endif
-  {N_("S.E. Mean"),      "SEMEAN",    PIVOT_RC_OTHER,   default_create,   default_update,   semean_get,    default_destroy},
-  {N_("Sum"),            "SUM",       PIVOT_RC_OTHER,   default_create,   default_update,   sum_get,       default_destroy},
-  {N_("Minimum"),        "MIN",       PIVOT_RC_OTHER,   min_create,       min_update,       min_get,       simple_destroy},
-  {N_("Maximum"),        "MAX",       PIVOT_RC_OTHER,   max_create,       max_update,       max_get,       simple_destroy},
-  {N_("Range"),          "RANGE",     PIVOT_RC_OTHER,   range_create,     range_update,     range_get,     simple_destroy},
-  {N_("Variance"),       "VARIANCE",  PIVOT_RC_OTHER,   default_create,   default_update,   variance_get,  default_destroy},
-  {N_("Kurtosis"),       "KURT",      PIVOT_RC_OTHER,   default_create,   default_update,   kurt_get,      default_destroy},
-  {N_("S.E. Kurt"),      "SEKURT",    PIVOT_RC_OTHER,   default_create,   default_update,   sekurt_get,    default_destroy},
-  {N_("Skewness"),       "SKEW",      PIVOT_RC_OTHER,   default_create,   default_update,   skew_get,      default_destroy},
-  {N_("S.E. Skew"),      "SESKEW",    PIVOT_RC_OTHER,   default_create,   default_update,   seskew_get,    default_destroy},
-  {N_("First"),          "FIRST",     PIVOT_RC_OTHER,   first_create,     first_update,     first_get,     simple_destroy},
-  {N_("Last"),           "LAST",      PIVOT_RC_OTHER,   last_create,      last_update,      last_get,      simple_destroy},
+  {N_("S.E. Mean"),      "SEMEAN",    NULL          ,   default_create,   default_update,   semean_get,    default_destroy},
+  {N_("Sum"),            "SUM",       NULL          ,   default_create,   default_update,   sum_get,       default_destroy},
+  {N_("Minimum"),        "MIN",       NULL          ,   min_create,       min_update,       min_get,       simple_destroy},
+  {N_("Maximum"),        "MAX",       NULL          ,   max_create,       max_update,       max_get,       simple_destroy},
+  {N_("Range"),          "RANGE",     NULL          ,   range_create,     range_update,     range_get,     simple_destroy},
+  {N_("Variance"),       "VARIANCE",  NULL          ,   default_create,   default_update,   variance_get,  default_destroy},
+  {N_("Kurtosis"),       "KURT",      NULL          ,   default_create,   default_update,   kurt_get,      default_destroy},
+  {N_("S.E. Kurt"),      "SEKURT",    NULL          ,   default_create,   default_update,   sekurt_get,    default_destroy},
+  {N_("Skewness"),       "SKEW",      NULL          ,   default_create,   default_update,   skew_get,      default_destroy},
+  {N_("S.E. Skew"),      "SESKEW",    NULL          ,   default_create,   default_update,   seskew_get,    default_destroy},
+  {N_("First"),          "FIRST",     NULL          ,   first_create,     first_update,     first_get,     simple_destroy},
+  {N_("Last"),           "LAST",      NULL          ,   last_create,      last_update,      last_get,      simple_destroy},
 #if 0
   {N_("Percent N"),      "NPCT",      PIVOT_RC_PERCENT, default_create,   default_update,   NULL,          default_destroy},
   {N_("Percent Sum"),    "SPCT",      PIVOT_RC_PERCENT, default_create,   default_update,   NULL,          default_destroy},
 #endif
-  {N_("Harmonic Mean"),  "HARMONIC",  PIVOT_RC_OTHER,   harmonic_create,  harmonic_update,  harmonic_get,  simple_destroy},
-  {N_("Geom. Mean"),     "GEOMETRIC", PIVOT_RC_OTHER,   geometric_create, geometric_update, geometric_get, simple_destroy}
+  {N_("Harmonic Mean"),  "HARMONIC",  NULL          ,   harmonic_create,  harmonic_update,  harmonic_get,  simple_destroy},
+  {N_("Geom. Mean"),     "GEOMETRIC", NULL          ,   geometric_create, geometric_update, geometric_get, simple_destroy}
 };
index c30b66c31005a5e6f8b80c56f196d0604d10cabe..94ee1d1956409c276587865c79c9e0ebb522081a 100644 (file)
@@ -567,8 +567,14 @@ populate_table (const struct means *means, const struct mtable *mt,
           }
 
          int idx = s + v * means->n_statistics;
-          pivot_table_put (pt, indexes, pt->n_dimensions,
-                           pivot_value_new_number (sg (cell->stat[idx])));
+         struct pivot_value *pv
+           = pivot_value_new_number (sg (cell->stat[idx]));
+         if (NULL == cell_spec[stat].rc)
+           {
+             const struct variable *dv = mt->dep_vars[v];
+             pv->numeric.format = * var_get_print_format (dv);
+           }
+          pivot_table_put (pt, indexes, pt->n_dimensions, pv);
         }
     }
   free (indexes);
index c9aeeb7a0aea254e0963648f2862a85d08a46562..8e48319d704a06fa1f003ad9e2147c9841a80b22 100644 (file)
@@ -685,7 +685,7 @@ AT_SETUP([MEANS multi combination])
 AT_KEYWORDS([categorical categoricals])
 
 AT_DATA([means-multi-combination.sps], [dnl
-data list notable list /one two three four five six.
+data list notable list /one (F22.5) two (F22.5) three four five six.
 begin data
 1 1 1 1 1 1
 2 1 1 1 1 1
@@ -758,8 +758,6 @@ recode five (2 = 52) (1 = 51).
 recode four (2 = 42) (1 = 41).
 recode three (2 = 32) (1 = 31).
 
-set format F22.5.
-
 means tables = one two BY three four BY five six.
 ])