程序如下:(运行错误,求高手指导!)
%macro EqWBinn (DSin, XVar, Nb, XBVar, DSout, DSMap);
proc sql noprint;
select max(&XVar) into: Vmax from &dsin;
select min(&XVar) into: Vmin from &dsin;
run;
quit;
%let bs=%sysevalf((&Vmax-&Vmin)/&Nb);
data &dsout;
set &dsin;
%do i=1 %to &Nb;
%let Bin_U=%sysevalf(&Vmax+&Vmin);
%let Bin_L=%sysevalf(&Bin_U-&bs);
%if &i=1 %then
%do;
if &Xvar>=&Bin_L and &Xvar<=&Bin_U then &XBvar=&i;
%end;
%else %if &i>1 %then
%do;
if &Xvar>&Bin_L and &Xvar<=&Bin_U then &XBvar=&i;
%end;
%end;
run;
proc sql noprint;
create table &DSMap (BinMin num, BinMax num, BinNo num);
%do i=1 %to &Nb;
%let
Bin_U=%sysevalf(&Vmin+&i*&Bs);
%let
Bin_L=%sysevalf(&Bin_U-&Bs);
insert into &DSMap;
values(&Bin_L,&Bin_U,&i);
%end;
quit;
%mend;
%let DSin=sashelp.cars;
%let DSout=test1;
%let XVar=Horsepower;
%let Nb=428;
%let XBVar=Horsepower_b;
%let DSMap=test1map;
%EqWBinn(&DSin, &XVar, &Nb, &XBVar, &DSout, &DSMap);
proc chart data=test1;
vbar Horsepower_b;
run;