这个问题在SAS论坛上进行了讨论,与会者最终同意不同意.
问题很简单:SAS missing value在编译时为所有变量分配一个UNLESS 变量显示在a中sum statement(在这种情况下,SAS 0在编译时指定一个值).这是我的简单证明
data test;
put _all_;
var1+1;
var2=5;
put _all_;
run;
Run Code Online (Sandbox Code Playgroud)
记录屏幕
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.
Run Code Online (Sandbox Code Playgroud)
var2分配了一个missing valueBUT var1被分配,0因为它是一部分sum statement(我相信如此)
我的问题是为什么?我很确定SAS missing values在编译时会为所有变量分配.为什么它会在一个变量中出现异常sum statement?还有其他例外吗?
我不会称之为总结陈述.
该声明
var1+1;
Run Code Online (Sandbox Code Playgroud)
相当于
retain var1 0;
var1 = var1 + 1;
Run Code Online (Sandbox Code Playgroud)
也不是"长"的总结陈述
var1 = var1 + 1;
Run Code Online (Sandbox Code Playgroud)
也不
var1 = sum(var1, 1);
Run Code Online (Sandbox Code Playgroud)
它本身会执行RETAIN行为,也不会初始化为零.所以回答这个问题:
初始化为零是a + b;
变量语法隐式请求的RETAIN行为的一部分
a.
我想不出其他例外.