按时地方 发表于 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;我的程序又修改了 程序是这样的,但是仍然不能运行出结果。请指教~~谢谢