X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Foneway.c;h=199d6252c55fa024f90275f81c219affb3dd10b5;hb=1cf8b236bb43257161f2c014b2384aa4709315c9;hp=49a34f2ed593f299cc15466d068d4c44857a2bb0;hpb=6dffb017e700eda7cd5111509042dc8964fff29f;p=pspp-builds.git diff --git a/src/language/stats/oneway.c b/src/language/stats/oneway.c index 49a34f2e..199d6252 100644 --- a/src/language/stats/oneway.c +++ b/src/language/stats/oneway.c @@ -758,7 +758,15 @@ run_oneway (const struct oneway_spec *cmd, gsl_matrix *cm; struct per_var_ws *pvw = &ws.vws[v]; const struct categoricals *cats = covariance_get_categoricals (pvw->cov); - categoricals_done (cats); + const bool ok = categoricals_done (cats); + + if ( ! ok) + { + msg (MW, + _("Dependent variable %s has no non-missing values. No analysis for this variable will be done."), + var_get_name (cmd->vars[v])); + continue; + } cm = covariance_calculate_unnormalized (pvw->cov); @@ -783,6 +791,11 @@ run_oneway (const struct oneway_spec *cmd, { const struct categoricals *cats = covariance_get_categoricals (ws.vws[v].cov); + if ( ! categoricals_is_complete (cats)) + { + continue; + } + if (categoricals_n_total (cats) > ws.actual_number_of_groups) ws.actual_number_of_groups = categoricals_n_total (cats); } @@ -859,7 +872,12 @@ output_oneway (const struct oneway_spec *cmd, struct oneway_workspace *ws) { int v; for (v = 0 ; v < cmd->n_vars; ++v) - show_comparisons (cmd, ws, v); + { + const struct categoricals *cats = covariance_get_categoricals (ws->vws[v].cov); + + if ( categoricals_is_complete (cats)) + show_comparisons (cmd, ws, v); + } } } @@ -1068,6 +1086,7 @@ show_descriptives (const struct oneway_spec *cmd, const struct oneway_workspace tab_double (t, 9, row + count, 0, dd->maximum, fmt); } + if (categoricals_is_complete (cats)) { double T; double n, mean, variance; @@ -1099,6 +1118,7 @@ show_descriptives (const struct oneway_spec *cmd, const struct oneway_workspace tab_double (t, 7, row + count, 0, mean + T * std_error, NULL); + /* Min and Max */ tab_double (t, 8, row + count, 0, ws->dd_total[v]->minimum, fmt); tab_double (t, 9, row + count, 0, ws->dd_total[v]->maximum, fmt);