From: John Darrington <john@darrington.wattle.id.au>
Date: Sun, 23 Jun 2019 15:57:30 +0000 (+0200)
Subject: MEANS: Change the statistic formats to follow their respective variables
X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fd8e27f58ebe1bd2cb28dbb5a91690310441c9cd;p=pspp

MEANS: Change the statistic formats to follow their respective variables
---

diff --git a/src/language/stats/means-calc.c b/src/language/stats/means-calc.c
index 7e5142fd78..5a3c205b97 100644
--- a/src/language/stats/means-calc.c
+++ b/src/language/stats/means-calc.c
@@ -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}
 };
diff --git a/src/language/stats/means.c b/src/language/stats/means.c
index c30b66c310..94ee1d1956 100644
--- a/src/language/stats/means.c
+++ b/src/language/stats/means.c
@@ -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);
diff --git a/tests/language/stats/means.at b/tests/language/stats/means.at
index c9aeeb7a0a..8e48319d70 100644
--- a/tests/language/stats/means.at
+++ b/tests/language/stats/means.at
@@ -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.
 ])