SAS forum讨论了这个问题,与会者最终同意不同意。
问题很简单:SAS在编译时为所有变量分配missing value
UNLESS
变量显示在sum statement
中(在这种情况下,SAS指定的值为{{1}在编译时)。这是我的简单证据
0
记录屏幕
data test;
put _all_;
var1+1;
var2=5;
put _all_;
run;
var1=0 var2=. _ERROR_=0 _N_=1
var1=1 var2=5 _ERROR_=0 _N_=1
NOTE: The data set WORK.TEST has 1 observations and 2 variables.
被分配了var2
但missing value
被分配了var1
,因为它是0
的一部分(我相信如此)
我的问题是为什么?我很确定SAS在编译时为所有变量分配sum statement
。为什么它会在missing values
中显示的变量例外?还有其他例外吗?
答案 0 :(得分:6)
我不会称之为总结陈述。
声明
var1+1;
相当于
retain var1 0;
var1 = var1 + 1;
也不是'长'总结陈述
var1 = var1 + 1;
也不是
var1 = sum(var1, 1);
本身会执行RETAIN行为,也不会初始化为零。 所以回答这个问题:
初始化为零是隐式请求的RETAIN行为的一部分
a + b;
变量a
的语法。
我无法想到其他例外情况。