按时地方 发表于 2011-12-20 20:48 
我大概明白你的意思了。 我的基本思路是这样的,在每个循环的时候生成一个temp,然后每次结束都把这个set ...
data a;
input n r sic value date ddmmyy8.;
format date ddmmyy10.;
cards;
1  0.1  1   109 01-01-10
2  0.2  1   209 01-02-10
3  0.3  1   167 01-03-10
4  0.1  2   123 01-04-10
5  0.2  2   200 01-05-10
6  0.3  2   210 01-06-10
7  0.4  2   342 02-07-10
8  0.12 1   223 02-08-10
1  0.29 1   560 02-09-10
;
run;
data a;
set a;
month= month (date);
run;
%macro rollreg(datain=);
  %do firstmonth = 1 %to 9;
    %let lastmonth = %eval( &firstmonth + 3);
    data combine; set &datain combine; 
      where &firstmonth<= month <= &lastmonth;
    proc reg data=combine outest = resul edf; 
       model r = value sic ;
           by n year
    run;
  %end;
%mend rollreg(datain=);
%rollreg(datain=a); quit;我的程序又修改了 程序是这样的,但是仍然不能运行出结果。请指教~~谢谢