sas - 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;
但它只会创建一个新列。
解决方案
因为您将三个变量分组,但在选择中,您选择了所有变量。这将导致按功能分组无用。
/*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;
推荐阅读
- google-apps-script - 需要找到一种在特定行之后开始数据输入的方法
- python - 如何在 pandas 中跟踪数据框的更改
- java - JDBC语句查询超时为0
- angular - Karma 不会因缺少的组件而中断
- postgresql - 如何恢复navicat中的备份文件?
- ios - 如何在 UIView 中添加曲线左侧和右侧以实现 swift
- android - 带有底部导航和其他子导航策略的复杂 Jetpack 导航
- kubernetes - 自动分配预定义的环境变量\挂载到集群上的每个 pod(包括未来的)
- batch-file - 使用 control-M 执行脚本 bat
- javascript - 在每个索引处插入一个元素 - Vanilla JS