2015-02-23 27 views
0

我有一個建立這樣的數據:SAS轉置具有多個變量和每個組ID的值的長數據?

Pers Year Month Variable Value 
AAA 2001 01 Var1  100 
AAA 2001 01 Var2  200 
AAA 2001 06 Var1  110 
AAA 2001 06 Var2  210 
AAA 2002 01 Var1  120 
AAA 2002 01 Var2  . 
BBB 2001 01 Var1  100 
BBB 2001 01 Var2  200 
BBB 2001 06 Var1  110 
BBB 2001 06 Var2  210 
BBB 2002 01 Var2  220 

我想數據,看起來像這樣:

Pers Year Month Var1 Var2 
AAA 2001 01 100 200 
AAA 2001 06 110 210 
AAA 2002 01 120 . 
BBB 2001 01 100 200 
BBB 2001 06 110 210 
BBB 2002 01 . 220 

我怎樣才能做到這一點在SAS,最好用PROC轉或SQL?

請注意,在上面的輸入數據中,Person BBB缺少2002-01 Var1的觀測值,但輸出數據在最後一行返回了缺失值,即「。」。

+0

當然,你可以有這樣的通過'PROC transpose'例子看在線制定出來的? – Longfish 2015-02-23 09:57:30

+0

謝謝你的建設性貢獻,@凱斯。 – 2015-03-13 05:40:52

回答

4

使用proc transpose是顯而易見的解決方案。

proc transpose data=yourdata out=yourdatat1(drop=_name_); 
    by pers year month; 
    id variable; 
    var value; 
run; 

使用proc sql,您可以使用case when邏輯來概括像下面的數據:

proc sql; 
create table yourdatat2 as 
select 
    pers, 
    year, 
    month, 
    sum(case when variable = 'Var1' then value else . end) as Var1, 
    sum(case when variable = 'Var2' then value else . end) as Var2 
from 
    yourdata 
group by 
    pers, 
    year, 
    month 
; 
quit; 
相關問題