我对整个列中的总和时使用的语法感到困惑。
我编写了以下代码来汇总各列:
DATA SUM_RESULTS_ADF;
SET VOLUME_DOLLAR;
by SYM_ROOT;
if %upcase(EX) = 'D';
if first.SYM_ROOT then
do;
SUMMED_DOLLARSIZE=0;
SUMMED_SIZE=0;
end;
SUMMED_DOLLARSIZE + DOLLAR_SIZE;
SUMMED_SIZE + SIZE;
if last.SYM_ROOT then output;
drop DOLLAR_SIZE SIZE;
RUN;
我只想将名为DOLLAR_SIZE和大小的列中的所有数字相加。但我不确定我是否正确地做到了。
因为在OOC语言中,我们通常会写:SUMMED_DOLLARSIZE = SUMMED_DOLLARSIZE + DOLLAR_SIZE;
但似乎SAS在这里并不需要等号。
答案 0 :(得分:2)
使用SUM语句或SUM(,...)函数将不同于仅使用+运算符处理缺失值。使用SUM时,将忽略缺失值,但使用+时,它们将生成缺少的结果。
您正在使用SUM语句。这只是保存一些打字的捷径。
SUM语句的格式为:
variable + expression ;
这相当于这两个陈述:
retain variable 0 ;
variable = sum(variable,expression);
如果使用简单加法而不是SUM(,...)函数,则任何缺少值的观察都会导致总和丢失。
这是一个有效的例子:
data want ;
input cost ;
sum1 + cost ;
retain sum2 0;
sum2 = sum(sum2,cost);
retain sum3 0;
sum3 = sum3 + cost;
cards;
10
20
.
30
;