analyis. 4) any of the variables in the original analysis were missing
(either system or user-missing values that weren't included).
*/
-static int
+static enum trns_result
descriptives_trns_proc (void *trns_, struct ccase **c,
casenumber case_idx UNUSED)
{
if (t->filter)
{
double f = case_num (*c, t->filter);
- if (f == 0.0 || var_is_num_missing (t->filter, f, MV_ANY))
+ if (f == 0.0 || var_is_num_missing (t->filter, f))
{
descriptives_set_all_sysmis_zscores (t, *c);
return TRNS_CONTINUE;
for (vars = t->vars; vars < t->vars + t->n_vars; vars++)
{
double score = case_num (*c, *vars);
- if (var_is_num_missing (*vars, score, t->exclude))
+ if (var_is_num_missing (*vars, score) & t->exclude)
{
descriptives_set_all_sysmis_zscores (t, *c);
return TRNS_CONTINUE;
double *output = case_num_rw (*c, z->z_var);
if (z->mean == SYSMIS || z->std_dev == SYSMIS
- || var_is_num_missing (z->src_var, input, t->exclude))
+ || var_is_num_missing (z->src_var, input) & t->exclude)
*output = SYSMIS;
else
*output = (input - z->mean) / z->std_dev;
return ok;
}
+static const struct trns_class descriptives_trns_class = {
+ .name = "DESCRIPTIVES (Z scores)",
+ .execute = descriptives_trns_proc,
+ .destroy = descriptives_trns_free,
+};
+
/* Sets up a transformation to calculate Z scores. */
static void
setup_z_trns (struct dsc_proc *dsc, struct dataset *ds)
{
struct dsc_trns *t;
- size_t cnt, i;
+ size_t n, i;
- for (cnt = i = 0; i < dsc->n_vars; i++)
+ for (n = i = 0; i < dsc->n_vars; i++)
if (dsc->vars[i].z_name != NULL)
- cnt++;
+ n++;
t = xmalloc (sizeof *t);
- t->z_scores = xnmalloc (cnt, sizeof *t->z_scores);
- t->n_z_scores = cnt;
+ t->z_scores = xnmalloc (n, sizeof *t->z_scores);
+ t->n_z_scores = n;
t->missing_type = dsc->missing_type;
t->exclude = dsc->exclude;
if (t->missing_type == DSC_LISTWISE)
t->ok = true;
dsc->z_writer = NULL;
- for (cnt = i = 0; i < dsc->n_vars; i++)
+ for (n = i = 0; i < dsc->n_vars; i++)
{
struct dsc_var *dv = &dsc->vars[i];
if (dv->z_name != NULL)
var_set_label (dst_var, label);
free (label);
- z = &t->z_scores[cnt++];
+ z = &t->z_scores[n++];
z->src_var = dv->v;
z->z_var = dst_var;
}
}
- add_transformation (ds,
- descriptives_trns_proc, descriptives_trns_free, t);
+ add_transformation (ds, &descriptives_trns_class, t);
}
\f
/* Statistical calculation. */
if (filter)
{
double f = case_num (c, filter);
- if (f == 0.0 || var_is_num_missing (filter, f, MV_ANY))
+ if (f == 0.0 || var_is_num_missing (filter, f))
continue;
}
struct dsc_var *dv = &dsc->vars[i];
double x = case_num (c, dv->v);
- if (var_is_num_missing (dv->v, x, dsc->exclude))
+ if (var_is_num_missing (dv->v, x) & dsc->exclude)
{
dv->missing += weight;
continue;
if (filter)
{
double f = case_num (c, filter);
- if (f == 0.0 || var_is_num_missing (filter, f, MV_ANY))
+ if (f == 0.0 || var_is_num_missing (filter, f))
continue;
}
struct dsc_var *dv = &dsc->vars[i];
double x = case_num (c, dv->v);
- if (var_is_num_missing (dv->v, x, dsc->exclude))
+ if (var_is_num_missing (dv->v, x) & dsc->exclude)
continue;
if (dv->moments != NULL)
struct dsc_var *dv = &dsc->vars[i];
double x = case_num (c, dv->v);
- if (var_is_num_missing (dv->v, x, dsc->exclude))
+ if (var_is_num_missing (dv->v, x) & dsc->exclude)
return true;
}
return false;