2014-03-26 191 views
1

我想通過SN和名稱將虛擬變量分配爲OP。如果SN和名稱然後OP = 1,如果SN和名稱<>到先前的名稱然後OP = 2,如果重複然後OP = 2,相同的條件如下,請參考下面SAS中的虛擬變量

SN  NAME OP 
109034 SPANISH 1 
109036 FRANCE 1 
109036 SECURITE 2 
109036 SECURITE 2 
109036 SECURITE 2 
109037 AOMlk 1 
109037 SECPPAA 2 
109037 CIVILE 3 
109037 CIVILE 3 
109038 FRANCE 1 
109038 SECURITE 2 
109038 SECURITE 2 
109038 SECURITE 2 
109039 GOVERNME 1 
109039 GOVERNME 1 
109039 GOVERNME 1 
109041 ITALIA 1 
109041 SOREML 2 
109041 SOREML 2 
109041 SOREML 2 

的例子我試圖與這個代碼,我沒有得到我想要什麼

data new2(keep=SN Name OP); 
set new1; 
by SN Name ; 
retain OP(0); 
if first.SN and first.Name then OP=1; 
else OP=OP+1; 

run; 
+0

你是什麼意思「如果SN和名稱,然後OP = 1」?它沒有任何意義。你的意思是不是空的? –

+0

EX:SN:109036名稱:法國賦值OP:1 SN:109036名稱:SECURITE賦值OP:2如果它重複爲SN:109036名稱:SECURITE然後賦值OP:2,如果不是SN:109036名稱:其他分配OP:3 – user2784588

回答

1

你的代碼是不工作的原因是因爲它的增量OP時的名稱不會改變,當它改變設置回1。

你需要的東西像下面這樣做你想要做什麼:

data want; 
    set have; 
    by sn name notsorted; 

    if first.sn then op = 1; 
    else if first.name then op + 1; 
run; 
+0

完美,謝謝 – user2784588