【发布时间】:2020-04-16 00:10:51
【问题描述】:
我想对每个组进行求和,并为每个组的总和创建一个新变量。我尝试了 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 必须将聚合值重新合并到所有原始观察值上,以便能够返回这些变量的所有值。您的查询在输出中包含 VALUE.。
标签: sas