嵌套做直到 eof in do while 循环



是否可以在do untildo while循环中嵌套do until (eof)?我无法让它工作。

数据

data have;
    do i = 1 to 3;
        output;
    end;
run;

示例 - 在第一次j后退出

data want;
    j = 1;
    do while (j < 4);
        do until (eof);
            set have end=eof;
        end;
        call missing(eof);
        output;
        j + 1;
    end;
run;

如果我的问题不够清楚,请告诉我。谢谢!

通常,

您可以在任何其他类型的中使用任何类型的 DO 循环。

您的特定程序将在第一次尝试在外部 DO 循环的第二次迭代上运行 SET 语句时停止,因为没有更多的观察要读取。 大多数正常的 SAS 数据步进在耗尽输入流时以相同的方式停止。

如果确实要重新读取整个数据集,请使用 SET 语句上的 POINT= 选项。 确保有办法停止该步骤,因为它将无法再读取输入流的末尾。

data want;
  do j=1 to 4;
    do p=1 to nobs;
      set have point=p nobs=nobs ;
      * Do something there ;
    end;
    * Do something else here ;
  end;
  * and maybe something here too ;
  stop;
run;

最新更新