2017-06-29 83 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