首页 > 解决方案 > 对子项进行分组并显示父项总和

问题描述

我有下表

+-------+--------+---------+
| group | item   |  value  |
+-------+--------+---------+
|   1   |   a    |   10    |
|   1   |   b    |   20    |
|   2   |   b    |   30    |
|   2   |   c    |   40    |
+-------+--------+---------+

我想按 对表进行group分组,将分组的总和插入value,然后取消分组:

+-------+--------+
| item  | value  |
+-------+--------+
|   1   |   30   |
|   a   |   10   |
|   b   |   20   |
|   2   |   70   |
|   b   |   30   |
|   c   |   40   |
+-------+--------+

结果的目的是将第一列解释为属于第 1 组的项目 a 和 b,总和为 30,而项目 b 和 c 属于第 2 组,总和为 70。

标签: sas

解决方案


这种数据转换可以指示报告要求,而不是用于下游处理的有用数据结构。 Proc REPORT可以以所需的形式创建输出。

data have;
infile datalines;
input group $ item $ value @@; datalines;
 1 a 10   1 b 20   2 b 30   2 c 40  
;

proc report data=have;
  column group item value;
  define group / order order=data noprint;
  break before group / summarize;
  compute item;
    if missing(item) then item=group;
  endcomp;
run;

在此处输入图像描述


推荐阅读