From 3facf6314da231910f60a53805916e879b1782e9 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Sun, 14 Aug 2022 16:42:56 -0700 Subject: [PATCH] FREQUENCIES: Use the smallest mode if there are multiple. This matches the documentation. --- src/language/stats/frequencies.c | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/language/stats/frequencies.c b/src/language/stats/frequencies.c index 018cc6237e..d20d8392c1 100644 --- a/src/language/stats/frequencies.c +++ b/src/language/stats/frequencies.c @@ -1502,21 +1502,14 @@ calc_stats (const struct frq_proc *frq, const struct var_freqs *vf, int most_often = -1; double X_mode = SYSMIS; - /* Calculate the mode. */ + /* Calculate the mode. If there is more than one mode, we take the + smallest. */ for (f = ft->valid; f < ft->missing; f++) - { - if (most_often < f->count) - { - most_often = f->count; - X_mode = f->values[0].f; - } - else if (most_often == f->count) - { - /* A duplicate mode is undefined. - FIXME: keep track of *all* the modes. */ - X_mode = SYSMIS; - } - } + if (most_often < f->count) + { + most_often = f->count; + X_mode = f->values[0].f; + } /* Calculate moments. */ m = moments_create (MOMENT_KURTOSIS); -- 2.30.2