-
-int
-cmd_means (struct lexer *lexer, struct dataset *ds)
-{
- struct means means;
- means.pool = pool_create ();
-
- means.exclude = MV_ANY;
- means.dep_exclude = MV_ANY;
- means.listwise_exclude = false;
- means.table = NULL;
- means.n_tables = 0;
-
- means.dict = dataset_dict (ds);
-
- means.n_statistics = 3;
- means.statistics = xcalloc (3, sizeof *means.statistics);
- means.statistics[0] = MEANS_MEAN;
- means.statistics[1] = MEANS_N;
- means.statistics[2] = MEANS_STDDEV;
-
- if (! means_parse (lexer, &means))
- goto error;
-
- {
- struct casegrouper *grouper;
- struct casereader *group;
- bool ok;
-
- grouper = casegrouper_create_splits (proc_open (ds), means.dict);
- while (casegrouper_get_next_group (grouper, &group))
- {
- run_means (&means, group, ds);
- }
- ok = casegrouper_destroy (grouper);
- ok = proc_commit (ds) && ok;
- }
-
- for (int t = 0; t < means.n_tables; ++t)
- {
- const struct mtable *table = means.table + t;
- means_shipout (table, &means);
- }
-
- return CMD_SUCCESS;
-
- error:
-
- return CMD_FAILURE;
-}
-
-
-\f
-
-