projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Docs
[pspp]
/
src
/
language
/
stats
/
ctables.c
diff --git
a/src/language/stats/ctables.c
b/src/language/stats/ctables.c
index d087e000cf17ae071a570dcbec0ec15cf0c2787d..bb7f5c37aa973afe6a6b6431e37d81bef9ff9079 100644
(file)
--- a/
src/language/stats/ctables.c
+++ b/
src/language/stats/ctables.c
@@
-2551,11
+2551,14
@@
ctables_summary_init (union ctables_summary *s,
break;
case CTSF_MEAN:
break;
case CTSF_MEAN:
+ case CTSF_SUM:
+ case CTSF_areaPCT_SUM:
+ s->moments = moments1_create (MOMENT_MEAN);
+ break;
+
case CTSF_SEMEAN:
case CTSF_STDDEV:
case CTSF_SEMEAN:
case CTSF_STDDEV:
- case CTSF_SUM:
case CTSF_VARIANCE:
case CTSF_VARIANCE:
- case CTSF_areaPCT_SUM:
s->moments = moments1_create (MOMENT_VARIANCE);
break;
s->moments = moments1_create (MOMENT_VARIANCE);
break;
@@
-2652,24
+2655,37
@@
ctables_summary_add (union ctables_summary *s,
switch (ss->function)
{
case CTSF_TOTALN:
switch (ss->function)
{
case CTSF_TOTALN:
- case CTSF_areaPCT_TOTALN:
s->count += ss->weighted ? d_weight : 1.0;
break;
s->count += ss->weighted ? d_weight : 1.0;
break;
+ case CTSF_areaPCT_TOTALN:
+ s->count += ss->weighted ? e_weight : 1.0;
+ break;
+
case CTSF_COUNT:
case CTSF_COUNT:
- case CTSF_areaPCT_COUNT:
if (is_scale || !excluded_missing)
s->count += ss->weighted ? d_weight : 1.0;
break;
if (is_scale || !excluded_missing)
s->count += ss->weighted ? d_weight : 1.0;
break;
+ case CTSF_areaPCT_COUNT:
+ if (is_scale || !excluded_missing)
+ s->count += ss->weighted ? e_weight : 1.0;
+ break;
+
case CTSF_VALIDN:
case CTSF_VALIDN:
- case CTSF_areaPCT_VALIDN:
if (is_scale
? !is_scale_missing
: !is_missing)
s->count += ss->weighted ? d_weight : 1.0;
break;
if (is_scale
? !is_scale_missing
: !is_missing)
s->count += ss->weighted ? d_weight : 1.0;
break;
+ case CTSF_areaPCT_VALIDN:
+ if (is_scale
+ ? !is_scale_missing
+ : !is_missing)
+ s->count += ss->weighted ? e_weight : 1.0;
+ break;
+
case CTSF_areaID:
break;
case CTSF_areaID:
break;
@@
-2677,7
+2693,7
@@
ctables_summary_add (union ctables_summary *s,
if (is_scale
? is_scale_missing
: is_missing)
if (is_scale
? is_scale_missing
: is_missing)
- s->count += ss->weighted ?
d
_weight : 1.0;
+ s->count += ss->weighted ?
e
_weight : 1.0;
break;
case CTSF_ECOUNT:
break;
case CTSF_ECOUNT:
@@
-2714,11
+2730,15
@@
ctables_summary_add (union ctables_summary *s,
case CTSF_STDDEV:
case CTSF_SUM:
case CTSF_VARIANCE:
case CTSF_STDDEV:
case CTSF_SUM:
case CTSF_VARIANCE:
- case CTSF_areaPCT_SUM:
if (!is_scale_missing)
moments1_add (s->moments, value->f, ss->weighted ? e_weight : 1.0);
break;
if (!is_scale_missing)
moments1_add (s->moments, value->f, ss->weighted ? e_weight : 1.0);
break;
+ case CTSF_areaPCT_SUM:
+ if (!is_missing && !is_scale_missing)
+ moments1_add (s->moments, value->f, ss->weighted ? e_weight : 1.0);
+ break;
+
case CTSF_MEDIAN:
case CTSF_MODE:
case CTSF_PTILE:
case CTSF_MEDIAN:
case CTSF_MODE:
case CTSF_PTILE:
@@
-3726,8
+3746,8
@@
ctables_table_add_section (struct ctables_table *t, enum pivot_axis_type a,
for (size_t i = 0; i < nest->n; i++)
hmap_init (&s->occurrences[a][i]);
}
for (size_t i = 0; i < nest->n; i++)
hmap_init (&s->occurrences[a][i]);
}
- for (
size_t i = 0; i < N_CTATS; i
++)
- hmap_init (&s->areas[
i
]);
+ for (
enum ctables_area_type at = 0; at < N_CTATS; at
++)
+ hmap_init (&s->areas[
at
]);
}
}
}
}
@@
-5189,8
+5209,8
@@
ctables_section_uninit (struct ctables_section *s)
}
hmap_destroy (&s->cells);
}
hmap_destroy (&s->cells);
- for (
size_t i = 0; i < N_CTATS; i
++)
- hmap_destroy (&s->areas[
i
]);
+ for (
enum ctables_area_type at = 0; at < N_CTATS; at
++)
+ hmap_destroy (&s->areas[
at
]);
}
static void
}
static void
@@
-5257,7
+5277,7
@@
ctables_execute (struct dataset *ds, struct casereader *input,
for (struct ccase *c = casereader_read (group); c;
case_unref (c), c = casereader_read (group))
{
for (struct ccase *c = casereader_read (group); c;
case_unref (c), c = casereader_read (group))
{
- double d_weight = dict_get_case_weight (dict, c, &warn_on_invalid);
+ double d_weight = dict_get_
rounded_
case_weight (dict, c, &warn_on_invalid);
double e_weight = (ct->e_weight
? var_force_valid_weight (ct->e_weight,
case_num (c, ct->e_weight),
double e_weight = (ct->e_weight
? var_force_valid_weight (ct->e_weight,
case_num (c, ct->e_weight),