首页 > 解决方案 > SAS 按组求和,然后为每个组创建新变量

问题描述

我想对每个组进行求和,并为每个组的总和创建一个新变量。我尝试了 proc sql,但它只创建了一个新变量。我的数据集如下所示:

data have;
input firm year product$ value;
datalines;
1 2012 a 5
1 2012 a 6
1 2012 b 3
1 2013 a 4
1 2013 a 3
1 2013 b 4
1 2013 b 3
2 2012 a 5
2 2012 a 6
2 2012 b 3
2 2012 b 4
2 2012 b 2
2 2013 a 4
2 2013 a 5
2 2013 b 3
2 2013 b 3
;
run;

我想要的是一个有四列的表:公司年份productA_sum productB_sum。

我试过这样:

proc sql;
create table h.want as
select a.*, sum(a.value) as sumvalue
from h.have as a
group by firm, year, product;
quit;

但它只会创建一个新列。

标签: sas

解决方案


因为您将三个变量分组,但在选择中,您选择了所有变量。这将导致按功能分组无用。

/*Try this one*/     
proc sql;
    create table h.want as
    select a.firm, a.year, a.product, sum(a.value) as sumvalue
    from h.have as a
    group by firm, year, product;
    quit;

推荐阅读