2017-06-29 101 views
1

我想问一个关于累计和的问题。我想我可以通过使用简单的样本更好地解释。所以,我有以下数据集:SAS转置数据累计总和

Group  Time    Value 
A    14:25    5 
A    14:25    10 
A    14:26     8 
B    14:25     4 
B    14:25     7 
C    14:25    12 
C    14:25     3 
C    14:26     6 
C    14:26     9 

我希望得到以下数据集:

Time   A     B     C 
14:25  15 (5+10)   11 (4+7)   15(12+3) 
14:26  8     0     15(6+9) 

回答

1

准备数据:

data a; 
    time ="14:25"; 
    group="A"; 
    value=5; 
    output; 
    time ="14:25"; 
    group="A"; 
    value=10; 
    output; 
    time ="14:26"; 
    group="A"; 
    value=8; 
    output; 
    time ="14:25"; 
    group="B"; 
    value=4; 
    output; 
    time ="14:25"; 
    group="B"; 
    value=7; 
    output; 
    time ="14:25"; 
    group="C"; 
    value=12; 
    output; 
    time ="14:25"; 
    group="C"; 
    value=3; 
    output; 
    time ="14:26"; 
    group="C"; 
    value=6; 
    output; 
    time ="14:26"; 
    group="C"; 
    value=9; 
    output; 
run; 

移调数据:

options missing=0; 
proc sql noprint; 
    CREATE TABLE a2 AS 
    SELECT time 
    ,group 
    ,sum(value) as value 
    FROM a 
    GROUP BY time,group 
    ; 
quit; 
proc transpose data=a2; 
    by time; 
    id group; 
    var value; 
run; 

而不是使用proc sql哟你也可以使用proc summary

proc summary data=a sum nonobs noprint nway; 
    class time group; 
    var value; 
    output out=a2(drop=_type_ _freq_) SUM()=; 
run; 
+1

Btw,CLASS语句不需要输入数据按其变量排序(BY语句需要它排序)。 – vasja