IF和之间有什么区别IF-THEN
例如以下声明
if type='H' then output;
vs
if type='H';
output;
Run Code Online (Sandbox Code Playgroud)
if-then语句有条件地执行代码.如果对于给定的观察满足条件,则在;执行之前的'then'之后的任何条件,否则它不是.在您的示例中,由于以下内容output,仅将具有类型的观察'H'输出到由数据步骤构建的数据集.您还可以使用if-then-do语句,例如在以下代码中:
if type = 'H' then do;
i=1;
output;
end;
Run Code Online (Sandbox Code Playgroud)
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;命令时才会覆盖该输出.
| 归档时间: |
|
| 查看次数: |
3926 次 |
| 最近记录: |