data example6_7;
do company=1 to 5;
do month=1 to 12;
input sales@@;output;
end;end;
cards;
21 23 25 28 31 34 37 41 45 50 54 60
22 25 29 33 38 44 51 59 67 77 89 102
23 28 33 40 48 57 69 82 99 119 142 171
24 30 38 47 59 73 92 114 143 179 224 279
25 33 42 55 71 93 121 157 204 265 345 448
;
run;
%macro univariate(data,var,group);
proc sort data=&data; by &group;run;
proc univariate data=&data noprint;
var &var; by &group;
output out=result n=n nmiss=nmiss
mean=mean std=std
median=median q1=q1 q3=q3
min=min max=max;
run;
data a (where=(&group=1)) b (where=(&group=2));
set result;
format mean 6.1 median 6.1 std 6.1;
run;
data ab;
merge a (rename=(n=na nmiss=nmissa
mean=meana std=stda
median=mediana q1=q1a q3=q3a
min=mina max=maxa))
b (rename=(n=nb nmiss=nmissb
mean=meanb std=stdb
median=medianb q1=q1b q3=q3b
min=minb max=maxb))
run;
%mend univariate;
%univariate(example6_7,sales, company);
data _null_;
file print notitle;
set abcde;
put #1 @5 "指标" @22 "子公司1" @42 "子公司2"
#2 @5 "例数(缺失)" @22 NA '(' nmissa')' @42 NB '(' nmissb')'
#3 @5 "均数(标准差)" @22 meanA '(' stda')' @42 meanB '(' stdB')'
#4 @5 "中位数(Q1-Q3)" @22 mediana '(' q1a '~' q3a')' @42 medianb '(' q1b '~' q3b')'
#5 @5 "最小值-最大值" @22 mina '~' maxa @42 minb '~' maxb;
run;
%macro 后面就看不懂了,希望能帮帮忙,初学者,感谢~