SAS Sum语法问题

时间:2017-06-16 15:40:17

标签: sas

我对整个列中的总和时使用的语法感到困惑。

我编写了以下代码来汇总各列:

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在这里并不需要等号。

1 个答案:

答案 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
;

enter image description here