我写了下面的代码来创建一个"运行总计"列名为" sum"。虽然它似乎有效,但我不了解SAS如何执行此代码。当它遇到语句sum + var
时,如果sum
未定义,它如何知道该怎么做?根据书籍" The Little SAS Book:A Primer",SAS数据步骤有一个内置循环,通过观察执行程序观察。鉴于此,当程序到达第二行时,程序如何知道等同于sum[row2] = sum[row1] + var[row2]
?
data df;
input var;
datalines;
1
3
.
5
1
;
run;
data df2;
set df;
sum+var;
run;
答案 0 :(得分:2)
此语法称为隐式保留,相当于:
retain sum 0;
sum=sum(sum,var);
当你保留一个变量时,重新加载PDV时它的值不会被设置为缺失(它'保留'前一个值)。它不会从上一行读取 - 这是一种常见的误解。
有关保留声明的更多信息,请参见SAS documentation