projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Handle case of a lookup table as the active file.
[pspp]
/
src
/
examine.q
diff --git
a/src/examine.q
b/src/examine.q
index 4e28f23917501542defa0803efbc9cc4667b9610..562defe7b403ca7663722cb70b1394d50584bbb5 100644
(file)
--- a/
src/examine.q
+++ b/
src/examine.q
@@
-15,8
+15,8
@@
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 5
9 Temple Place - Suite 330
, Boston, MA
-0211
1-1307
, USA. */
+Foundation, Inc., 5
1 Franklin Street, Fifth Floor
, Boston, MA
+0211
0-1301
, USA. */
#include <config.h>
#include <gsl/gsl_cdf.h>
#include <config.h>
#include <gsl/gsl_cdf.h>
@@
-49,7
+49,7
@@
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
/* (specification)
"EXAMINE" (xmn_):
/* (specification)
"EXAMINE" (xmn_):
- *variables=custom;
+ *
^
variables=custom;
+total=custom;
+nototal=custom;
+missing=miss:pairwise/!listwise,
+total=custom;
+nototal=custom;
+missing=miss:pairwise/!listwise,
@@
-372,6
+372,8
@@
output_examine(void)
}
}
+/* Create a hash table of percentiles and their values from the list of
+ percentiles */
static struct hsh_table *
list_to_ptile_hash(const subc_list_double *l)
{
static struct hsh_table *
list_to_ptile_hash(const subc_list_double *l)
{
@@
-391,6
+393,7
@@
list_to_ptile_hash(const subc_list_double *l)
struct percentile *p = xmalloc (sizeof (struct percentile));
p->p = subc_list_double_at(l,i);
struct percentile *p = xmalloc (sizeof (struct percentile));
p->p = subc_list_double_at(l,i);
+ p->v = SYSMIS;
hsh_insert(h, p);
hsh_insert(h, p);
@@
-410,9
+413,9
@@
xmn_custom_percentiles(struct cmd_examine *p UNUSED)
lex_match('(');
lex_match('(');
- while ( lex_
double_p
() )
+ while ( lex_
is_number
() )
{
{
- subc_list_double_push(&percentile_list,lex_
double
());
+ subc_list_double_push(&percentile_list,lex_
number
());
lex_get();
lex_get();
@@
-609,6
+612,7
@@
factor_calc(struct ccase *c, int case_no, double weight, int case_missing)
while ( fctr)
{
while ( fctr)
{
+ struct factor_statistics **foo ;
union value indep_vals[2] ;
indep_vals[0] = * case_data(c, fctr->indep_var[0]->fv);
union value indep_vals[2] ;
indep_vals[0] = * case_data(c, fctr->indep_var[0]->fv);
@@
-620,7
+624,7
@@
factor_calc(struct ccase *c, int case_no, double weight, int case_missing)
assert(fctr->fstats);
assert(fctr->fstats);
-
struct factor_statistics **
foo = ( struct factor_statistics ** )
+ foo = ( struct factor_statistics ** )
hsh_probe(fctr->fstats, (void *) &indep_vals);
if ( !*foo )
hsh_probe(fctr->fstats, (void *) &indep_vals);
if ( !*foo )
@@
-1505,8
+1509,8
@@
populate_descriptives(struct tab_table *tbl, int col, int row,
tab_text (tbl, col,
row + 3,
tab_text (tbl, col,
row + 3,
- TAB_LEFT | TAT_TITLE,
- _("5% Trimmed Mean"));
+ TAB_LEFT | TAT_TITLE
| TAT_PRINTF
,
+ _("5%
%
Trimmed Mean"));
tab_float (tbl, col + 2,
row + 3,
tab_float (tbl, col + 2,
row + 3,
@@
-1527,12
+1531,14
@@
populate_descriptives(struct tab_table *tbl, int col, int row,
assert(p);
assert(p);
+
tab_float (tbl, col + 2,
row + 4,
TAB_CENTER,
p->v,
8, 2);
}
tab_float (tbl, col + 2,
row + 4,
TAB_CENTER,
p->v,
8, 2);
}
+
tab_text (tbl, col,
row + 5,
tab_text (tbl, col,
row + 5,
@@
-1684,10
+1690,7
@@
box_plot_variables(const struct factor *fctr,
{
double y_min = DBL_MAX;
double y_max = -DBL_MAX;
{
double y_min = DBL_MAX;
double y_max = -DBL_MAX;
- struct chart *ch;
-
- ch = chart_create();
-
+ struct chart *ch = chart_create();
const char *s = factor_to_string(fctr, *fs, 0 );
chart_write_title(ch, s);
const char *s = factor_to_string(fctr, *fs, 0 );
chart_write_title(ch, s);
@@
-1772,7
+1775,7
@@
box_plot_group(const struct factor *fctr,
s);
}
}
s);
}
}
- else
+ else
if ( ch )
{
const double box_width = (ch->data_right - ch->data_left) / 3.0;
const double box_centre = (ch->data_right + ch->data_left) / 2.0;
{
const double box_width = (ch->data_right - ch->data_left) / 3.0;
const double box_centre = (ch->data_right + ch->data_left) / 2.0;
@@
-1851,8
+1854,7
@@
np_plot(const struct metrics *m, const char *factorname)
{
/* We have to cache the detrended data, beacause we need to
find its limits before we can plot it */
{
/* We have to cache the detrended data, beacause we need to
find its limits before we can plot it */
- double *d_data;
- d_data = xmalloc (m->n_data * sizeof(double));
+ double *d_data = xmalloc (m->n_data * sizeof(double));
double d_max = -DBL_MAX;
double d_min = DBL_MAX;
for ( i = 0 ; i < m->n_data; ++i )
double d_max = -DBL_MAX;
double d_min = DBL_MAX;
for ( i = 0 ; i < m->n_data; ++i )