projects
/
pspp-builds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed use of @dots in @math command.
[pspp-builds.git]
/
src
/
language
/
stats
/
examine.q
diff --git
a/src/language/stats/examine.q
b/src/language/stats/examine.q
index 9d7ed136ab083c25fb8de054b47135fd291890b3..4fccd83b6191fc596a283c927551a492f8106580 100644
(file)
--- a/
src/language/stats/examine.q
+++ b/
src/language/stats/examine.q
@@
-156,21
+156,23
@@
static void output_examine (void);
void factor_calc (const struct ccase *c, int case_no,
void factor_calc (const struct ccase *c, int case_no,
- double weight,
int
case_missing);
+ double weight,
bool
case_missing);
/* Represent a factor as a string, so it can be
printed in a human readable fashion */
/* Represent a factor as a string, so it can be
printed in a human readable fashion */
-
const char *
factor_to_string (const struct factor *fctr,
+
static void
factor_to_string (const struct factor *fctr,
const struct factor_statistics *fs,
const struct factor_statistics *fs,
- const struct variable *var);
-
+ const struct variable *var,
+ struct string *str
+ );
/* Represent a factor as a string, so it can be
printed in a human readable fashion,
but sacrificing some readablility for the sake of brevity */
/* Represent a factor as a string, so it can be
printed in a human readable fashion,
but sacrificing some readablility for the sake of brevity */
-const char *factor_to_string_concise (const struct factor *fctr,
- struct factor_statistics *fs);
+static void factor_to_string_concise (const struct factor *fctr,
+ const struct factor_statistics *fs,
+ struct string *);
@@
-370,10
+372,12
@@
output_examine (void)
for ( fs = fctr->fs ; *fs ; ++fs )
{
for ( fs = fctr->fs ; *fs ; ++fs )
{
- const char *s = factor_to_string (fctr, *fs, dependent_vars[v]);
+ struct string str;
+ ds_init_empty (&str);
+ factor_to_string (fctr, *fs, dependent_vars[v], &str);
if ( cmd.a_plot[XMN_PLT_NPPLOT] )
if ( cmd.a_plot[XMN_PLT_NPPLOT] )
- np_plot (& (*fs)->m[v],
s
);
+ np_plot (& (*fs)->m[v],
ds_cstr (&str)
);
if ( cmd.a_plot[XMN_PLT_HISTOGRAM] )
{
if ( cmd.a_plot[XMN_PLT_HISTOGRAM] )
{
@@
-384,9
+388,11
@@
output_examine (void)
normal.stddev = (*fs)->m[v].stddev;
histogram_plot ((*fs)->m[v].histogram,
normal.stddev = (*fs)->m[v].stddev;
histogram_plot ((*fs)->m[v].histogram,
-
s
, &normal, 0);
+
ds_cstr (&str)
, &normal, 0);
}
}
+ ds_destroy (&str);
+
} /* for ( fs .... */
} /* for ( v = 0 ..... */
} /* for ( fs .... */
} /* for ( v = 0 ..... */
@@
-633,7
+639,7
@@
void populate_summary (struct tab_table *t, int col, int row,
/* Perform calculations for the sub factors */
void
factor_calc (const struct ccase *c, int case_no, double weight,
/* Perform calculations for the sub factors */
void
factor_calc (const struct ccase *c, int case_no, double weight,
-
int
case_missing)
+
bool
case_missing)
{
size_t v;
struct factor *fctr = factors;
{
size_t v;
struct factor *fctr = factors;
@@
-694,7
+700,7
@@
factor_calc (const struct ccase *c, int case_no, double weight,
if (case_missing || var_is_value_missing (var, val, exclude_values))
{
free (val);
if (case_missing || var_is_value_missing (var, val, exclude_values))
{
free (val);
-
continue
;
+
val = NULL
;
}
metrics_calc ( & (*foo)->m[v], val, weight, case_no);
}
metrics_calc ( & (*foo)->m[v], val, weight, case_no);
@@
-748,7
+754,7
@@
run_examine (struct cmd_examine *cmd, struct casereader *input,
for (; casereader_read (input, &c); case_destroy (&c))
{
for (; casereader_read (input, &c); case_destroy (&c))
{
-
int case_missing = 0
;
+
bool case_missing = false
;
const double weight = dict_get_case_weight (dict, &c, NULL);
if ( cmd->miss == XMN_LISTWISE )
const double weight = dict_get_case_weight (dict, &c, NULL);
if ( cmd->miss == XMN_LISTWISE )
@@
-762,7
+768,7
@@
run_examine (struct cmd_examine *cmd, struct casereader *input,
);
if ( var_is_value_missing (var, val, exclude_values))
);
if ( var_is_value_missing (var, val, exclude_values))
- case_missing =
1
;
+ case_missing =
true
;
free (val);
}
free (val);
}
@@
-780,7
+786,7
@@
run_examine (struct cmd_examine *cmd, struct casereader *input,
|| case_missing )
{
free (val) ;
|| case_missing )
{
free (val) ;
-
continue
;
+
val = NULL
;
}
metrics_calc (&totals[v], val, weight, case_no);
}
metrics_calc (&totals[v], val, weight, case_no);
@@
-969,7
+975,6
@@
show_summary (const struct variable **dependent_var, int n_dep_var,
tab_title (tbl, _ ("Case Processing Summary"));
tab_title (tbl, _ ("Case Processing Summary"));
-
tab_joint_text (tbl, heading_columns, 0,
n_cols -1, 0,
TAB_CENTER | TAT_TITLE,
tab_joint_text (tbl, heading_columns, 0,
n_cols -1, 0,
TAB_CENTER | TAT_TITLE,
@@
-984,22
+989,21
@@
show_summary (const struct variable **dependent_var, int n_dep_var,
for ( i = 0 ; i < 3 ; ++i )
{
for ( i = 0 ; i < 3 ; ++i )
{
- tab_text (tbl, heading_columns + i
*
2 , 2, TAB_CENTER | TAT_TITLE,
+ tab_text (tbl, heading_columns + i
*
2 , 2, TAB_CENTER | TAT_TITLE,
_ ("N"));
_ ("N"));
- tab_text (tbl, heading_columns + i
*
2 + 1, 2, TAB_CENTER | TAT_TITLE,
+ tab_text (tbl, heading_columns + i
*
2 + 1, 2, TAB_CENTER | TAT_TITLE,
_ ("Percent"));
tab_joint_text (tbl, heading_columns + i*2 , 1,
_ ("Percent"));
tab_joint_text (tbl, heading_columns + i*2 , 1,
- heading_columns + i
*
2 + 1, 1,
+ heading_columns + i
*
2 + 1, 1,
TAB_CENTER | TAT_TITLE,
subtitle[i]);
tab_box (tbl, -1, -1,
TAL_0, TAL_0,
TAB_CENTER | TAT_TITLE,
subtitle[i]);
tab_box (tbl, -1, -1,
TAL_0, TAL_0,
- heading_columns + i*2, 1,
- heading_columns + i*2 + 1, 1);
-
+ heading_columns + i * 2, 1,
+ heading_columns + i * 2 + 1, 1);
}
}
@@
-1014,7
+1018,6
@@
show_summary (const struct variable **dependent_var, int n_dep_var,
tab_text (tbl, 2, heading_rows - 1, TAB_CENTER | TAT_TITLE,
var_to_string (fctr->indep_var[1]));
}
tab_text (tbl, 2, heading_rows - 1, TAB_CENTER | TAT_TITLE,
var_to_string (fctr->indep_var[1]));
}
-
}
}
@@
-1024,7
+1027,6
@@
show_summary (const struct variable **dependent_var, int n_dep_var,
if ( fctr )
n_factors = hsh_count (fctr->fstats);
if ( fctr )
n_factors = hsh_count (fctr->fstats);
-
if ( i > 0 )
tab_hline (tbl, TAL_1, 0, n_cols -1 , i * n_factors + heading_rows);
if ( i > 0 )
tab_hline (tbl, TAL_1, 0, n_cols -1 , i * n_factors + heading_rows);
@@
-1034,13
+1036,10
@@
show_summary (const struct variable **dependent_var, int n_dep_var,
var_to_string (dependent_var[i])
);
var_to_string (dependent_var[i])
);
-
if ( !fctr )
populate_summary (tbl, heading_columns,
(i * n_factors) + heading_rows,
&totals[i]);
if ( !fctr )
populate_summary (tbl, heading_columns,
(i * n_factors) + heading_rows,
&totals[i]);
-
-
else
{
struct factor_statistics **fs = fctr->fs;
else
{
struct factor_statistics **fs = fctr->fs;
@@
-1053,37
+1052,48
@@
show_summary (const struct variable **dependent_var, int n_dep_var,
0 != compare_values (prev, (*fs)->id[0],
var_get_width (fctr->indep_var[0])))
{
0 != compare_values (prev, (*fs)->id[0],
var_get_width (fctr->indep_var[0])))
{
+ struct string vstr;
+ ds_init_empty (&vstr);
+ var_append_value_name (fctr->indep_var[0],
+ (*fs)->id[0], &vstr);
+
tab_text (tbl,
1,
(i * n_factors ) + count +
heading_rows,
TAB_LEFT | TAT_TITLE,
tab_text (tbl,
1,
(i * n_factors ) + count +
heading_rows,
TAB_LEFT | TAT_TITLE,
- var_get_value_name (fctr->indep_var[0],
- (*fs)->id[0])
+ ds_cstr (&vstr)
);
);
+ ds_destroy (&vstr);
+
if (fctr->indep_var[1] && count > 0 )
tab_hline (tbl, TAL_1, 1, n_cols - 1,
(i * n_factors ) + count + heading_rows);
if (fctr->indep_var[1] && count > 0 )
tab_hline (tbl, TAL_1, 1, n_cols - 1,
(i * n_factors ) + count + heading_rows);
-
}
prev = (*fs)->id[0];
}
prev = (*fs)->id[0];
-
if ( fctr->indep_var[1])
if ( fctr->indep_var[1])
- tab_text (tbl,
- 2,
- (i * n_factors ) + count +
- heading_rows,
- TAB_LEFT | TAT_TITLE,
- var_get_value_name (fctr->indep_var[1], (*fs)->id[1])
- );
+ {
+ struct string vstr;
+ ds_init_empty (&vstr);
+ var_append_value_name (fctr->indep_var[1],
+ (*fs)->id[1], &vstr);
+ tab_text (tbl,
+ 2,
+ (i * n_factors ) + count +
+ heading_rows,
+ TAB_LEFT | TAT_TITLE,
+ ds_cstr (&vstr)
+ );
+ ds_destroy (&vstr);
+ }
populate_summary (tbl, heading_columns,
populate_summary (tbl, heading_columns,
- (i * n_factors) + count
- + heading_rows,
- & (*fs)->m[i]);
+
(i * n_factors) + count
+
+ heading_rows,
+
& (*fs)->m[i]);
count++ ;
fs++;
count++ ;
fs++;
@@
-1117,11
+1127,7
@@
populate_summary (struct tab_table *t, int col, int row,
/* This seems a bit pointless !!! */
tab_text (t, col + 5, row + 0, TAB_RIGHT | TAT_PRINTF, "%2.0f%%",
100.0 * total / total );
/* This seems a bit pointless !!! */
tab_text (t, col + 5, row + 0, TAB_RIGHT | TAT_PRINTF, "%2.0f%%",
100.0 * total / total );
-
-
}
}
-
-
}
}
@@
-1226,6
+1232,10
@@
show_extremes (const struct variable **dependent_var, int n_dep_var,
if ( !prev || 0 != compare_values (prev, (*fs)->id[0],
var_get_width (fctr->indep_var[0])))
{
if ( !prev || 0 != compare_values (prev, (*fs)->id[0],
var_get_width (fctr->indep_var[0])))
{
+ struct string vstr;
+ ds_init_empty (&vstr);
+ var_append_value_name (fctr->indep_var[0],
+ (*fs)->id[0], &vstr);
if ( count > 0 )
tab_hline (tbl, TAL_1, 1, n_cols - 1, row);
if ( count > 0 )
tab_hline (tbl, TAL_1, 1, n_cols - 1, row);
@@
-1233,9
+1243,10
@@
show_extremes (const struct variable **dependent_var, int n_dep_var,
tab_text (tbl,
1, row,
TAB_LEFT | TAT_TITLE,
tab_text (tbl,
1, row,
TAB_LEFT | TAT_TITLE,
- var_get_value_name (fctr->indep_var[0],
- (*fs)->id[0])
+ ds_cstr (&vstr)
);
);
+
+ ds_destroy (&vstr);
}
prev = (*fs)->id[0];
}
prev = (*fs)->id[0];
@@
-1244,11
+1255,19
@@
show_extremes (const struct variable **dependent_var, int n_dep_var,
tab_hline (tbl, TAL_1, 2, n_cols - 1, row);
if ( fctr->indep_var[1])
tab_hline (tbl, TAL_1, 2, n_cols - 1, row);
if ( fctr->indep_var[1])
+ {
+ struct string vstr;
+ ds_init_empty (&vstr);
+ var_append_value_name (fctr->indep_var[1], (*fs)->id[1], &vstr);
+
tab_text (tbl, 2, row,
TAB_LEFT | TAT_TITLE,
tab_text (tbl, 2, row,
TAB_LEFT | TAT_TITLE,
-
var_get_value_name (fctr->indep_var[1], (*fs)->id[1]
)
+
ds_cstr (&vstr
)
);
);
+ ds_destroy (&vstr);
+ }
+
populate_extremes (tbl, heading_columns - 2,
row, n_extremities,
& (*fs)->m[i]);
populate_extremes (tbl, heading_columns - 2,
row, n_extremities,
& (*fs)->m[i]);
@@
-1464,6
+1483,10
@@
show_descriptives (const struct variable **dependent_var,
if ( !prev || 0 != compare_values (prev, (*fs)->id[0],
var_get_width (fctr->indep_var[0])))
{
if ( !prev || 0 != compare_values (prev, (*fs)->id[0],
var_get_width (fctr->indep_var[0])))
{
+ struct string vstr;
+ ds_init_empty (&vstr);
+ var_append_value_name (fctr->indep_var[0],
+ (*fs)->id[0], &vstr);
if ( count > 0 )
tab_hline (tbl, TAL_1, 1, n_cols - 1, row);
if ( count > 0 )
tab_hline (tbl, TAL_1, 1, n_cols - 1, row);
@@
-1471,9
+1494,10
@@
show_descriptives (const struct variable **dependent_var,
tab_text (tbl,
1, row,
TAB_LEFT | TAT_TITLE,
tab_text (tbl,
1, row,
TAB_LEFT | TAT_TITLE,
- var_get_value_name (fctr->indep_var[0],
- (*fs)->id[0])
+ ds_cstr (&vstr)
);
);
+
+ ds_destroy (&vstr);
}
prev = (*fs)->id[0];
}
prev = (*fs)->id[0];
@@
-1482,11
+1506,19
@@
show_descriptives (const struct variable **dependent_var,
tab_hline (tbl, TAL_1, 2, n_cols - 1, row);
if ( fctr->indep_var[1])
tab_hline (tbl, TAL_1, 2, n_cols - 1, row);
if ( fctr->indep_var[1])
+ {
+ struct string vstr;
+ ds_init_empty (&vstr);
+ var_append_value_name (fctr->indep_var[1], (*fs)->id[1], &vstr);
+
tab_text (tbl, 2, row,
TAB_LEFT | TAT_TITLE,
tab_text (tbl, 2, row,
TAB_LEFT | TAT_TITLE,
-
var_get_value_name (fctr->indep_var[1], (*fs)->id[1]
)
+
ds_cstr (&vstr
)
);
);
+ ds_destroy (&vstr);
+ }
+
populate_descriptives (tbl, heading_columns - 2,
row, & (*fs)->m[i]);
populate_descriptives (tbl, heading_columns - 2,
row, & (*fs)->m[i]);
@@
-1746,12
+1778,14
@@
box_plot_variables (const struct factor *fctr,
for ( fs = fctr->fs ; *fs ; ++fs )
{
for ( fs = fctr->fs ; *fs ; ++fs )
{
+ struct string str;
double y_min = DBL_MAX;
double y_max = -DBL_MAX;
struct chart *ch = chart_create ();
double y_min = DBL_MAX;
double y_max = -DBL_MAX;
struct chart *ch = chart_create ();
- const char *s = factor_to_string (fctr, *fs, 0 );
+ ds_init_empty (&str);
+ factor_to_string (fctr, *fs, 0, &str );
- chart_write_title (ch,
s
);
+ chart_write_title (ch,
ds_cstr (&str)
);
for ( i = 0 ; i < n_vars ; ++i )
{
for ( i = 0 ; i < n_vars ; ++i )
{
@@
-1779,7
+1813,7
@@
box_plot_variables (const struct factor *fctr,
}
chart_submit (ch);
}
chart_submit (ch);
-
+ ds_destroy (&str);
}
}
}
}
@@
-1818,19
+1852,21
@@
box_plot_group (const struct factor *fctr,
for ( fs = fctr->fs ; *fs ; ++fs )
{
for ( fs = fctr->fs ; *fs ; ++fs )
{
-
- const char *s = factor_to_string_concise (fctr, *fs);
-
+ struct string str;
const double box_width = (ch->data_right - ch->data_left)
/ (n_factors * 2.0 ) ;
const double box_centre = ( f++ * 2 + 1) * box_width
+ ch->data_left;
const double box_width = (ch->data_right - ch->data_left)
/ (n_factors * 2.0 ) ;
const double box_centre = ( f++ * 2 + 1) * box_width
+ ch->data_left;
+ ds_init_empty (&str);
+ factor_to_string_concise (fctr, *fs, &str);
+
boxplot_draw_boxplot (ch,
box_centre, box_width,
& (*fs)->m[i],
boxplot_draw_boxplot (ch,
box_centre, box_width,
& (*fs)->m[i],
- s);
+ ds_cstr (&str));
+ ds_destroy (&str);
}
}
else if ( ch )
}
}
else if ( ch )
@@
-2087,6
+2123,11
@@
show_percentiles (const struct variable **dependent_var,
if ( !prev || 0 != compare_values (prev, (*fs)->id[0],
var_get_width (fctr->indep_var[0])))
{
if ( !prev || 0 != compare_values (prev, (*fs)->id[0],
var_get_width (fctr->indep_var[0])))
{
+ struct string vstr;
+ ds_init_empty (&vstr);
+ var_append_value_name (fctr->indep_var[0],
+ (*fs)->id[0], &vstr);
+
if ( count > 0 )
tab_hline (tbl, TAL_1, 1, n_cols - 1, row);
if ( count > 0 )
tab_hline (tbl, TAL_1, 1, n_cols - 1, row);
@@
-2094,11
+2135,10
@@
show_percentiles (const struct variable **dependent_var,
tab_text (tbl,
1, row,
TAB_LEFT | TAT_TITLE,
tab_text (tbl,
1, row,
TAB_LEFT | TAT_TITLE,
- var_get_value_name (fctr->indep_var[0],
- (*fs)->id[0])
+ ds_cstr (&vstr)
);
);
-
+ ds_destroy (&vstr);
}
prev = (*fs)->id[0];
}
prev = (*fs)->id[0];
@@
-2107,11
+2147,19
@@
show_percentiles (const struct variable **dependent_var,
tab_hline (tbl, TAL_1, 2, n_cols - 1, row);
if ( fctr->indep_var[1])
tab_hline (tbl, TAL_1, 2, n_cols - 1, row);
if ( fctr->indep_var[1])
+ {
+ struct string vstr;
+ ds_init_empty (&vstr);
+ var_append_value_name (fctr->indep_var[1], (*fs)->id[1], &vstr);
+
tab_text (tbl, 2, row,
TAB_LEFT | TAT_TITLE,
tab_text (tbl, 2, row,
TAB_LEFT | TAT_TITLE,
-
var_get_value_name (fctr->indep_var[1], (*fs)->id[1]
)
+
ds_cstr (&vstr
)
);
);
+ ds_destroy (&vstr);
+ }
+
populate_percentiles (tbl, n_heading_columns - 1,
row, & (*fs)->m[i]);
populate_percentiles (tbl, n_heading_columns - 1,
row, & (*fs)->m[i]);
@@
-2192,69
+2240,54
@@
populate_percentiles (struct tab_table *tbl, int col, int row,
}
}
-
-
-const char *
+static void
factor_to_string (const struct factor *fctr,
const struct factor_statistics *fs,
factor_to_string (const struct factor *fctr,
const struct factor_statistics *fs,
- const struct variable *var)
+ const struct variable *var,
+ struct string *str
+ )
{
{
-
- static char buf1[100];
- char buf2[100];
-
- strcpy (buf1,"");
-
if (var)
if (var)
-
sprintf (buf1
, "%s (",var_to_string (var) );
+
ds_put_format (str
, "%s (",var_to_string (var) );
- snprintf (buf2, 100, "%s = %s",
- var_to_string (fctr->indep_var[0]),
- var_get_value_name (fctr->indep_var[0], fs->id[0]));
+ ds_put_format (str, "%s = ",
+ var_to_string (fctr->indep_var[0]));
-
strcat (buf1, buf2
);
+
var_append_value_name (fctr->indep_var[0], fs->id[0], str
);
if ( fctr->indep_var[1] )
{
if ( fctr->indep_var[1] )
{
-
sprintf (buf2, "; %s = %s
)",
- var_to_string (fctr->indep_var[1]),
- var_get_value_name (fctr->indep_var[1], fs->id[1]));
-
strcat (buf1, buf2
);
+
ds_put_format (str, "; %s =
)",
+ var_to_string (fctr->indep_var[1]));
+
+
var_append_value_name (fctr->indep_var[1], fs->id[1], str
);
}
else
{
if ( var )
}
else
{
if ( var )
-
strcat (buf1
, ")");
+
ds_put_cstr (str
, ")");
}
}
-
- return buf1;
}
}
-
-const char *
+static void
factor_to_string_concise (const struct factor *fctr,
factor_to_string_concise (const struct factor *fctr,
- struct factor_statistics *fs)
+ const struct factor_statistics *fs,
+ struct string *str
+ )
{
{
-
- static char buf[100];
-
- char buf2[100];
-
- snprintf (buf, 100, "%s",
- var_get_value_name (fctr->indep_var[0], fs->id[0]));
+ var_append_value_name (fctr->indep_var[0], fs->id[0], str);
if ( fctr->indep_var[1] )
{
if ( fctr->indep_var[1] )
{
- sprintf (buf2, ",%s)", var_get_value_name (fctr->indep_var[1],
- fs->id[1]) );
- strcat (buf, buf2);
- }
+ ds_put_cstr (str, ",");
+ var_append_value_name (fctr->indep_var[1],fs->id[1], str);
- return buf;
+ ds_put_cstr (str, ")");
+ }
}
/*
}
/*