2016-03-21 139 views
0

SAS中的堆棧數據代碼程序是什麼? 例如的目的,可以說我有這樣的數據集:堆疊數據集

DATA test.one; 
INPUT Name $ Y1996 Y1997 Y1998 Y1999; 
cards; 
Dan 5 10 40 20 
Derek 10 12 10 10 
run; 

proc print data = test.one; 
run; 

運行這組會給我這樣的輸出:

Name  Y1996 Y1997 Y1998 Y1999 
Dan  5  10  40  20 
Derek  10  12  10  10 

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

Name Year Income 
Dan 1996 5 
Dan 1997 10 
Dan 1998 40 
Dan 1999 20 
Derek 1996 10 
Derek 1997 12 
Derek 1998 10 
Derek 1999 10 

它會創建一個與上面顯示的數據堆疊相對應的新變量收入。

+0

這是更常被稱爲轉置,並使用PROC TRANSPOSE爲它:) – Reeza

+0

謝謝,生病只是發佈一個答案,我發現感謝您的意見。 –

回答

0

你問的是如何直接讀取原始數據到表單中?

DATA want; 
    INPUT Name $ @; 
    do year=1996 to 1999; 
    input income @; 
    output; 
    end; 
cards; 
Dan 5 10 40 20 
Derek 10 12 10 10 
; 
0

PROC Transpose可以解決這個問題;

DATA test.one; 
INPUT Name $ y1996 y1997 y1998 y1999; 
cards; 
Dan 5 10 40 20 
Derek 10 12 10 10 
run; 

proc print data = test.one; 
run; 

proc transpose data=test.one out=long1; 
by name; 
run; 

data test2; 
set long1 (rename=(col1=Income)); 
RUN; 

然後它會將數據集轉換爲堆棧版本。

+1

您可以在proc轉置中進行重命名 - 或查看前綴以及id/idlabel語句。 – Reeza