Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sas 分组子项并显示父项和_Sas - Fatal编程技术网

Sas 分组子项并显示父项和

Sas 分组子项并显示父项和,sas,Sas,我有下表 +-------+--------+---------+ | group | item | value | +-------+--------+---------+ | 1 | a | 10 | | 1 | b | 20 | | 2 | b | 30 | | 2 | c | 40 | +-------+--------+---------+ 我想按分组,将分组后的总

我有下表

+-------+--------+---------+
| group | item   |  value  |
+-------+--------+---------+
|   1   |   a    |   10    |
|   1   |   b    |   20    |
|   2   |   b    |   30    |
|   2   |   c    |   40    |
+-------+--------+---------+
我想按
分组
,将分组后的总和插入
,然后取消分组:

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

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

我假设
组和
项目都是字符变量

data have;
infile datalines firstobs=4 dlm='|';
input group $ item $ value;
datalines;
+-------+--------+---------+
| group | item   |  value  |
+-------+--------+---------+
|   1   |   a    |   10    |
|   1   |   b    |   20    |
|   2   |   b    |   30    |
|   2   |   c    |   40    |
+-------+--------+---------+
;

data want (keep=group value);
    do _N_=1 by 1 until (last.group);
        set have;
        by group;
        v + value;
    end;
    value = v;output;v=0;
    do _N_=1 to _N_;
        set have;
        group = item;
        output;
    end;
run;

这种数据转换可以表示报告要求,而不是下游处理的有用数据结构<代码>过程报告
可以以所需的形式创建输出

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;