如何在SAS企业指南中的PROC SQL中创建每月值总和的新列



我在SAS Enterprise Guide中的proc-sql中有如下查询:

proc sql;
select 
event
, mnth
, value
from table1
order by mnth, name
;quit;

上面的proc-sql查询给出的结果如下:

event| mnth  | value
-----|-------|-------
ABC  | APRIL | 3E-6
ABC  | APRIL | 0,27950
ABC  | APRIL | 0,556
ABC  | MAY   | 0,228
...  | ...   | ...

我需要创建一个新的列,其中将显示每mnth的值的总和,因此我需要下面这样的东西(当然,如果可能的话,我们也应该考虑像"3E-6"这样的值(

event| mnth  | value   | sum
-----|-------|---------|-----
ABC  | APRIL | 3E-6    |
ABC  | APRIL | 0,27950 |
ABC  | APRIL | 0,556   | 0,8355
ABC  | MAY   | 0,228   | 0,228
...  | ...   | ...     | ...

如何在proc-sql中修改我的代码以达到上面的结果?

数据步骤会更容易。下面的代码对每组中每个月的值进行累积求和,然后仅在最后一个月输出结果。

data want;
set have;
by event mnth;
if(first.mnth) then s = 0;
s+value;

if(last.mnth) then sum = s;
drop s;
run;
总和
事件mnth>
ABC四月3E-6
ABC
ABC四月0.5560.835503
ABC5月0.2280.228

如果你真的想在proc SQL中完成,你可以这样做:

proc SQL;
select *, sum(value) as sum
from table1
group by mnth
order by mnth
;
run;

您可以在每一行中得到您的和(并且在数据步骤中只在最后一行中获得和要容易得多(。但是您应该注意您的值列是数字列。如果没有,您应该将其更改为一个:要么在表生成时,要么使用INPUT函数。

最新更新