2016-04-12 10 views
0

私は変数群、例えばb1-b30を持っており、b1 = 'a'またはb2 = 'a'またはb3 = 'a'のように同じ変数を同じ変数でテストする必要があります。 。 等々。 SASマクロの中に何か解決策があるのか​​、これを明示的に書くのを避けるためにsas配列を使ってこの作業をしていますか? サンプルコードは次のようである:複数のOR比較

data test; 
    input d1 d2 d3 d4 d5 ; 
cards; 
1 2 1 1 0 
2 3 1 0 0 
0 0 0 1 0 
0 2 1 0 2 
0 4 0 2 2 
0 0 0 0 3 
; 
run; 

data want; 
    set test; 
    if d1=1 or d2=1 or d3=1 or d4=1 then flag=1; 
    else flag=0; 
run; 

がので、私は、約50変数が同じ条件とフラグをテストします。

答えて

2

WHICHN()またはWHICHC()機能を使用できます。

flag1 = not 0=whichn(1,of d1-d4); 
1

array-nameを持つIN演算子は機能しますが、各変数グループに対して配列を作成する必要があります。 WHICHNを使用する方が簡単です。

array d[5]; 
if 1 in d then flag2=1; else flag2=0; 
関連する問題