是否可以在do until
或do 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;