我对这个output说法感到困惑.这是两个都有输出的程序.
1)计划一.按照我的预期产生3个观察值,output覆盖默认值data step output
data test ;
infile datalines ;
input type $ @ ;
if type='a' then do;
input money ;
output ;
end;
datalines ;
a 100
b 200
a 500
a 400
x 500
v 500
;
run;
proc print;
run;
Run Code Online (Sandbox Code Playgroud)
2)计划二.产生6个观察结果.为什么不 output 覆盖这个数据步骤?
data test ;
infile datalines ;
input type $ @ ;
if type='a' then input money ;
output ;
datalines ;
a 100
b 200
a 500
a 400
x 500
v 500
;
run;
proc print;
run;
Run Code Online (Sandbox Code Playgroud)
为什么output在第一种情况下完成工作,但在第二种情况下却没有?
在第一个程序中,输出是有条件执行的do组的一部分,因为它位于if type='a' then do;和之间end;.因此,只有在类型等于'a'时才会执行.在第二个程序中,输出根本不属于do组,因此它对所有观察执行,因此输出所有观察结果.