proc means 描述性統(tǒng)計(jì),可以看缺失,最小,最大,平均值,還有百分位數(shù)等等。那眾數(shù)怎么看?
*創(chuàng)建數(shù)據(jù)集;
data test;
do id=1 to 10;
do i=1 to 20;
x=abs(round(10*rannor(0)));
output;
end;
end;
drop i;
run;
*method1;
*定義宏(利用freq過(guò)程步計(jì)算眾數(shù));
%macro varmode(indata,xvar,idvar,outdata);
proc freq data=&indata noprint;
table &xvar /out=tempout;
by &idvar;
run;
proc sql noprint;
create table &outdata as select &idvar,&xvar from tempout group by id having count=max(count);
quit;
%mend;
%varmode(test,x,id,outdata);
*method2;
%macro varmode(indata,xvar,idvar,outdata);
proc sql;
create table &outdata as
select a.* from
(select &idvar,&xvar,count(&xvar)as xvar_count from &indata group by &idvar,&xvar )a
,
(select &idvar,max(xvar_count) as xvar_count_1 from (select &idvar,&xvar,count(&xvar)as xvar_count from &indata group by &idvar,&xvar )group by &idvar)b
where a.&idvar=b.&idvar and a.xvar_count=b.xvar_count_1
;
quit;
%mend;
%varmode(test,x,id,outdata);