2016-05-06 44 views
0

在SAS中,我擁有的數據集如下。數據步驟中的SAS使用分類變量將長數據重新整形爲寬度

id A 

1 2 
1 3 
2 1 
3 1 
3 2 

ID被提供給每個單獨的,A爲分類變量這需要1,2或3。我想和每每個單獨分離一個觀測數據進入三個指示變量,說A1,A2和A3。

結果是這樣的:

id A1 A2 A3 

1 0 1 1 
2 1 0 0 
3 1 1 0 

沒有人有任何想如何做到這一步的數據,而不是在SQL?提前致謝。

回答

1

所以你在正確的軌道上,轉置說法肯定是要走的路:

data temp; 
    input id A; 
    datalines; 
    1 2 
    1 3 
    2 1 
    3 1 
    3 2 
; 
run; 

首先要通過id來調換,使用可變答:

proc transpose data = temp 
    out = temp2 
    prefix = A; 
    by id; 
    var A; 
    id A; 
run; 

然後,對於以A開頭的所有變量,您希望用0代替所有缺失值,並用1代替所有非缺失值。這裏的保留聲明重新排列您的變量:

data temp3 (drop = _name_); 
    retain id A1 A2 A3; 
    set temp2; 
    array change A:; 
     do over change; 
     if change~=. then change=1; 
     if change=. then change=0; 
     end; 
run; 
相關問題