2016-04-18 46 views
0

我在SAS中有一個表,n字段叫做check1, check2, ... , checkN。每個字段都可以是「OK」或「KO」。如果每個檢查都是「OK」,我想生成一個「OK」的字段,如果其中一個檢查是「KO」,那麼它就是「KO」。我能怎麼做?如何在SAS中創建一個同時考慮更多字段的字段

在此先感謝

回答

3

使用WHICHC()函數以及布爾檢查來查看它是否大於零。如果您有命名約定,則不需要聲明數組。

Flag = whichc('KO', of check1-checkN) >0; 

編輯:

If WHICHC('KO', of check1-checkN)>0 then flag = 'KO'; 
Else flag='OK'; 
+0

如果所有字段都包含OK或KO那麼你可以使用'min'或'max'功能,而不是 – Longfish

0

最簡單的方法是聲明數組,並做穿過田野簡單的「做」循環。 在這段代碼中,我添加了一個步驟,告訴程序停止掃描checkn,如果其中一個字段有「KO」。 我已經設置了一些樣本數據,其中n = 4。

data dataset; 
input ID $ check1 $ check2 $ check3 $ check4 $; 
cards; 
A OK OK OK OK 
B OK OK OK KO 
C KO OK OK OK 
D KO KO KO OK 
; 
run; 

data dataset; 
set dataset; 
array check_array{4} check1-check4; 
do i=1 to 4; 
if result ne "KO" then do; 
if check_array{i}="OK" then result="OK"; else result="KO"; 
end; 
end; 
run; 
相關問題