SAS:在do循环中连续添加观察

时间:2016-07-14 06:06:33

标签: sas

我正在编写一段代码来获取日期数组,然后输出一个包含原始日期向量中日期的给定缓冲区内所有日期的数组。

我的计划是使用2个嵌套的do循环遍历原始日期数组,每次添加/减去缓冲区,然后使用数据集将这两个观察结果添加到原始集合中。

我一直在使用以下代码,但最终导致无限循环,SAS崩溃。

%let buffer = 3;     
data dates_with_buffer; 
   do i = -1*&buffer. to &buffer.; 
      do j = 1 to 14; 
         set original_dates point = j; 
         output_dates = dates + &buffer.; 
         output; 
      end; 
   end; 
run;

1 个答案:

答案 0 :(得分:1)

在set语句中使用point=时,还需要包含stop语句以防止无限循环。试试这个:

%let buffer = 3;     
data dates_with_buffer; 
   do i = -1*&buffer. to &buffer.; 
      do j = 1 to 14; 
         set original_dates point = j; 
         output_dates = dates + &buffer.; 
         output; 
      end; 
   end; 
   stop;
run;