%macro l_format(name=,low=,high=,interval=);
data l_a;
do i=&low. to %sysevalf(&high.-&interval.) by &interval.;
var1=catx('',i+0.1,'-',i+&interval.) ;
var2=catx('',i,'-',i+&interval.);
output;
end;
run;
data _null_;
set l_a end=final;
call symput('name'||strip(_n_),catx('',var1,'=','"',var2,'"'));
if final then call symput('num',strip(_n_));
run;
proc format;
value &name.
low - &low. = "小于&low."
%do i=1 %to &num.;
&&name&i..
%end;
%sysevalf(&high.+0.1) - high = "大于&high.";
run;
proc delete data=l_a; run;
%mend;
%l_format(name=group,low=3,high=16,interval=0.5);
data a;
input a;
cards;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
16.1
;
run;
data b;
set a;
b=put(a,group.);
run;



雷达卡




京公网安备 11010802022788号







