如何在SAS中使用不同的开始和结束数据日期进行循环?

时间:2016-04-18 22:58:23

标签: sas

我有一个面板数据,每个时间序列的每个ID都有不同的开始和结束日期。我想对每个带有10个obs的ID进行滚动回归。我想知道如何编写循环来完成它。例如,对于每个ID,我希望从第一个blind 19880831-19910228以及然后从第二个obs 19890228-19910531开始回归,依此类推,直到该ID的最后日期为止。但是,每个ID都有不同的开始和结束日期。谢谢。

1 个答案:

答案 0 :(得分:0)

考虑使用嵌套do循环的以下宏。外循环每10次遍历面板ID和内循环跳过,以按行号_N_过滤数据。然后将回归结果保存到单个一行results数据集中,后缀为id和10的当前倍数。确保更改循环限制,( 50 1000 )以容纳数据。

%macro rollingregression;
    %do i = 1 %to 50;                 ** ID LOOP;
        %do j = 1 %to 1000;           ** OBS LOOP; 
            data new_data;
                set current_data;       
                if ID = &i;     
                if _N_ >= &j & _N_ <= (&j + 9);
            run;

            proc reg data = new_data noprint outest=results&i&j;
                model y = x1 x2 x3;
            quit;
        %end;
    %end;
%mend rollingregression;

%rollingregression;