const struct examine *examine = aux1;
struct exploratory_stats *es = user_data;
+ bool this_case_is_missing = false;
+ /* LISTWISE missing must be dealt with here */
+ if (!examine->missing_pw)
+ {
+ for (v = 0; v < examine->n_dep_vars; v++)
+ {
+ const struct variable *var = examine->dep_vars[v];
+
+ if (var_is_value_missing (var, case_data (c, var), examine->dep_excl))
+ {
+ es[v].missing += weight;
+ this_case_is_missing = true;
+ }
+ }
+ }
+
+ if (this_case_is_missing)
+ return;
+
for (v = 0; v < examine->n_dep_vars; v++)
{
struct ccase *outcase ;
struct casereader *reader;
struct ccase *c;
- if (examine->histogramplot)
+ if (examine->histogramplot && es[v].non_missing > 0)
{
/* Sturges Rule */
double bin_width = fabs (es[v].minimum - es[v].maximum)
}
casereader_destroy (reader);
- if (examine->calc_extremes > 0)
+ if (examine->calc_extremes > 0 && es[v].non_missing > 0)
{
assert (es[v].minima[0].val == es[v].minimum);
assert (es[v].maxima[0].val == es[v].maximum);
case_unref (c);
}
- /* Remove cases on a listwise basis if requested */
- if ( cmd->missing_pw == false)
- input = casereader_create_filter_missing (input,
- cmd->dep_vars,
- cmd->n_dep_vars,
- cmd->dep_excl,
- NULL,
- NULL);
-
for (reader = input;
(c = casereader_read (reader)) != NULL; case_unref (c))
{
{
summary_report (cmd, i);
+ const size_t n_cats = categoricals_n_count (cmd->cats, i);
+ if (n_cats == 0)
+ continue;
+
if (cmd->disp_extremes > 0)
extremes_report (cmd, i);
.
END DATA.
-EXAMINE /x PLOT=HISTOGRAM.
+EXAMINE /x
+ PLOT=HISTOGRAM BOXPLOT NPPLOT SPREADLEVEL(1) ALL
+ /ID=x
+ /STATISTICS = DESCRIPTIVES EXTREME (5) ALL
+ /PERCENTILE=AEMPIRICAL
+ .
])
AT_CHECK([pspp -o pspp.csv examine.sps], [0], [ignore])
dnl Ignore output -- this is just a no-crash check.