为什么未定义的变量不会在DATA步骤中返回错误?

时间:2016-11-24 14:17:10

标签: sas

我写了下面的代码来创建一个"运行总计"列名为" 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;

1 个答案:

答案 0 :(得分:2)

此语法称为隐式保留,相当于:

retain sum 0;
sum=sum(sum,var);

当你保留一个变量时,重新加载PDV时它的值不会被设置为缺失(它'保留'前一个值)。它不会从上一行读取 - 这是一种常见的误解。

有关保留声明的更多信息,请参见SAS documentation