proc means data = data1 stackODSoutput MIN P10 P25 P50 P75 P90 MAX N NMISS SUM nolabels maxdec=3;
var var1 var2;
output out = output;
run;
从生成的报告中,我可以获得所有百分位数和SUM。但是输出数据只是提供了N,MIN,MAX,MEAN和std的基本统计数据。我怎样才能输出百分位数和总和?
对于output
中的proc means
数据集,您需要在output
语句中指定您想要的统计数据。将proc
语句视为仅控制视觉输出。试试这个:
proc means data=sashelp.cars;
var horsepower MPG_City MPG_Highway;
output out=output
sum=
mean=
median=
std=
min=
max=
p10=
p25=
p75=
p90=
/ autoname
;
run;
请注意,在=
之后,没有统计数据有任何内容。 autoname
选项自动命名统计变量。
为了便于阅读,我们可以更改输出表的格式。所有变量的命名约定是<variable>_<statistic>
。知道了这一点,我们可以转换表格,从名称中分离变量和统计数据,然后将其重新转换为更好的格式。
proc transpose data=output out=output_transposed;
var _NUMERIC_;
run;
data _want(index=(variable) );
set output_transposed;
Stat = scan(_NAME_, -1, '_');
Variable = tranwrd(_NAME_, cats('_', Stat), '');
keep Variable Stat COL1;
rename COL1 = Value;
run;
proc transpose data=_want out=want(drop=_NAME_);
by variable;
id stat;
var Value;
run;