%macro reg(code);
data a1;
set newall;
if &code=code;
run;
data a1;
set a1;
num=totobs;
%do i=1 %to (&num-60);
if (&num-&i)=60 then do;
proc reg data=a1 outest=results noprint;
model wkret=ret;
end;
%end;
%do i= (&num-59) %to #
if (&num-&i)>30 and (&num-&i)<60 then do;
proc reg data=a1 outest=results noprint;
model wkret=ret;
end;
谢谢各位,我的问题已经解决。
%macro reg;
data s1;
set try;
%do i=1 %to 514;
data a2;
set s1;
if d1>=&i and d1<=&i+60 and ret^=. and wkret^=.;/*删去无效值*/
run;
proc reg data=a2 outest=results noprint;
model ret=wkret;
by code;
run;
data results;
set results;
d1=&i+60; /*从第61个开始输出值*/
beta=wkret;
keep code d1 beta;
run;
data try;
merge try(in=a) results;
by code d1;
if a;
run;