将do嵌套到while循环中的eof中

时间:2019-07-13 15:48:42

标签: sas

是否可以将do until (eof)嵌套在do untildo while循环中?我无法使其正常工作。

数据

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;

让我知道我是否还没有足够清楚地说明我的问题。谢谢!

1 个答案:

答案 0 :(得分:1)

通常,您可以在任何其他类型中使用任何类型的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;