我是SAS编程的初学者。 我已经写了一段代码来理解这些东西,但是我得到的原因是在获得continue语句之后,它将输出一个语句。 以下是代码:
data a B;
put 'entering do DATASTEP' ;
do i=1 to 4;
put 'entering do loop'" " i;
if (i=1) then do;
put 'value of i is 1'" " i;
put 'Entering the loop' ;
put j=_N_;
if _N_ = 2 then continue;
set sashelp.class(firstobs=1 obs=5);
put 'Ouside the loop';
output a;
end;
if (i=2) then do;
put 'value of i is 2'" " i;
put 'Entering the loop' ;
put j=_n_;
set sashelp.class(firstobs=6 obs=10);
put 'Ouside the loop';
output B;
end;
end;
put 'GETING OUT OF THE DATASTEP';
run;
为了更清楚地说明我的怀疑请求请运行此,然后我们可以讨论输出数据集和日志。
提前致谢。
答案 0 :(得分:2)
我认为CONTINUE
工作正常。
通常,当您读取输入数据的末尾时,SAS将停止数据步骤。没有CONTINUE
语句,它会在第6次尝试从第一个SET语句中读取时。但是,当你试图第6次执行第二个SET语句时它会停止一次。
以下是数据步骤的简化版本。请注意它如何以1,6,7,2,8,3,9,4,10,5顺序读取记录。
data sample;
do i=1 to 10; output; end;
run;
data _null_ ;
if _n_^=2 then do;
set sample (firstobs=1 obs=5);
put i=;
end;
set sample (firstobs=6 obs=10);
put i=;
run;
i=1
i=6
i=7
i=2
i=8
i=3
i=9
i=4
i=10
i=5