break;
case MEDIAN:
{
- struct casereader *sorted_reader;
- struct percentile *median = percentile_create (0.5, i->cc);
- struct order_stats *os = &median->parent;
-
- sorted_reader = casewriter_make_reader (i->writer);
-
- order_stats_accumulate (&os, 1,
- sorted_reader,
- i->weight,
- i->subject,
- i->exclude);
-
- v->f = percentile_calculate (median, PC_HAVERAGE);
-
- statistic_destroy (&median->parent.parent);
+ if ( i->writer)
+ {
+ struct percentile *median = percentile_create (0.5, i->cc);
+ struct order_stats *os = &median->parent;
+ struct casereader *sorted_reader = casewriter_make_reader (i->writer);
+ i->writer = NULL;
+
+ order_stats_accumulate (&os, 1,
+ sorted_reader,
+ i->weight,
+ i->subject,
+ i->exclude);
+ i->dbl[0] = percentile_calculate (median, PC_HAVERAGE);
+ statistic_destroy (&median->parent.parent);
+ }
+ v->f = i->dbl[0];
}
break;
case SD:
5 4 6
7 5 8
7 6 9
-7 7 10
+7 7 20
9 8 11
end data.
aggregate outfile=* mode=addvariables
/break = x
/sum = sum(y)
- /mean = mean (y).
+ /mean = mean (y)
+ /median = median (y).
list.
])
AT_CHECK([pspp -O format=csv addvariables.sps], [0],
[Table: Data List
-x,cn,y,sum,mean
-1.00,1.00,2.00,2.00,2.00
-3.00,2.00,3.00,7.00,3.50
-3.00,3.00,4.00,7.00,3.50
-5.00,4.00,6.00,6.00,6.00
-7.00,5.00,8.00,27.00,9.00
-7.00,6.00,9.00,27.00,9.00
-7.00,7.00,10.00,27.00,9.00
-9.00,8.00,11.00,11.00,11.00
+x,cn,y,sum,mean,median
+1.00,1.00,2.00,2.00,2.00,2.00
+3.00,2.00,3.00,7.00,3.50,3.50
+3.00,3.00,4.00,7.00,3.50,3.50
+5.00,4.00,6.00,6.00,6.00,6.00
+7.00,5.00,8.00,37.00,12.33,9.00
+7.00,6.00,9.00,37.00,12.33,9.00
+7.00,7.00,20.00,37.00,12.33,9.00
+9.00,8.00,11.00,11.00,11.00,11.00
])
AT_CLEANUP