一个简单的问题:为什么 sas 会解决以下代码
data prova_2;
input id_2 $ age_2;
datalines;
zz 22
zz 22
zz 22
zz 23
xx 22
xx 24
aa 25
;
run;
data prova_2;
set prova_2;
if id_2="zz" then do; if age_2=23; end;
run;
通过输出下表?
相反,我希望它只输出一行,即第 1 行,即 id_2="zz" 和age_2=23 的行。任何想法?
提前致谢!
您仅对某些观测值运行子集 IF。
因此,ID_2 不是 zz 的所有观测值也将继续到数据步骤的末尾并被写出。
所以你所做的相当于
如果您没有编写显式 OUTPUT 语句,则 DATA 步骤的底部会有一个隐含的 OUTPUT 语句。所以你的代码相当于:
实现所需输出的一种方法是在 DO 循环内添加 OUTPUT 语句:
或者只使用单个子集 IF: