如何在SAS中使用求和函数

How to use sum function in SAS

我认为还有其他方法可以对所有单元格求和。我只想学习如何使用求和函数。请给我一些关于 SAS 中程序后的“sum(y)”的建议。

data dt00;
 input X Y @@;
 cards;
 1 3 2 5
;
run;

data dt01;
 set dt00;
 z+x+sum(y);
run;

沿行求和 - 求和和数组。

使用求和函数:

data want;
    set dt00;
    sum=sum(x, y);
run;

您也可以使用 sum=sum(of _numeric_); - 这将对所有数字列求和,以防太多而无法列出。

使用数组:

data want;
    set dt00;
    array s {*} _numeric_;
    sum=sum(of s[*]);
run;

沿列求和 - 这里我们只对列的总和感兴趣,所以我们 select 最后一行。您可以结合使用 set 语句中的 end= 选项和 if 语句。

data want;
    set dt00 end=eof; 
    sum_x + x;
    sum_y + y;
    
    if eof then output;
    keep sum:;
run;

如果您有很多列,我建议您使用其他 SAS 程序(例如使用 means 程序)计算列总数。

proc means data=dt00 noprint;
    var _numeric_;
    output out=want(drop=_type_ _freq_) sum= / autoname;
run;

对所有单元格求和 - 这里我们使用与沿列求和相同的技巧,因为我们只对所有单元格的总和感兴趣。

data want;
    set dt00 end=eof;
    sum + x + y;

    if eof then output;
    keep sum;
run;

求和语句sum + x + y表示自动保留求和变量,所有缺失值均视为0。

简而言之,这相当于

data want;
    set dt00 end=eof;
    retain sum;
    sum = sum(sum,x,y);

    if eof then output;
    keep sum;
run;