IF
和之间有什么区别IF-THEN
例如以下声明
if type='H' then output; vs if type='H'; output;
catquas.. 7
if-then语句有条件地执行代码.如果对于给定的观察满足条件,则在;
执行之前的'then'之后的任何条件,否则它不是.在您的示例中,由于以下内容output
,仅将具有类型的观察'H'
输出到由数据步骤构建的数据集.您还可以使用if-then-do语句,例如在以下代码中:
if type = 'H' then do; i=1; output; end;
if-then-do语句有条件地执行do;
和之间的代码end;
.因此,上述代码执行i=1;
和output;
仅当类型等于'H'
.
一个if
没有then
是一个"子集,如果".根据SAS文档:
子集化IF语句在将观察读入程序数据向量(PDV)之后测试条件.如果条件为真,则SAS继续处理当前观察.否则,丢弃观察结果,并继续进行下一次观察.
因此,如果type='H'
不满足子集化if(ex.)的条件,则观察不会输出到由数据步骤创建的数据集.在您的示例中,仅'H'
输出类型为的观察值.
总之,两个示例代码产生相同的结果,但是通过不同的方式.if type='H' then output;
只输出类型为的观测值'H'
,而if type='H'; output;
丢弃类型不是的观测值'H'
.请注意,在后者中您不需要,output;
因为SAS数据步骤中存在隐式输出,只有存在显式output;
命令时才会覆盖该输出.