2015-11-07 30 views
2

SAS序列號我有一個數據集是這樣的:一個ID

ID_no | Medication_type 
1  | type_1 
1  | type_2 
2  | type_1 
3  | type_2 
3  | type_3 
3  | type_4 

我想將它轉成一組

ID_NO | Medication 1 | Medication2 | Medication 3 
1  | type_1  | type 2  | 
2  | Type_1  |    | 
3  | Type_2  | Type_3  | Type_4 

要做到這一點,我需要做一個PROC轉但我想我需要一個像這樣的序列號去那裏:

ID_no | Medication_type | Seq_NO 
1  | type_1   | 1 
1  | type_2   | 2 
2  | type_1   | 1 
3  | type_2   | 1 
3  | type_3   | 2 
3  | type_4   | 3 

但是不幸的是我在sas中遇到了麻煩。我想是這樣的:

data want; 
    set have; 
    by ID_no; 
    if first.ID_no then do; 
    seq_no = 1; 
    seq_no + 1; 
    end; 
run; 

但它計算所有的方式,我很茫然,爲什麼?

回答

4

您已經有一個變量用於分組,您不需要另一個變量。

proc transpose data=have out=want prefix=medication_ ; 
    by id_no; 
    var medication_type; 
run; 

至於你試圖建立一個SEQ_NO變量,你需要讓它運行每個觀測到移動和聲明瞭IF塊。像這樣的東西。

data want; 
    set have; 
    by ID_no ; 
    if first.ID_no then seq_no=0; 
    seq_no+1; 
run;