2016-04-12 32 views
0

Bir grup değişkenim var, b1-b30 deyin ve b1 = 'a' veya b2 = 'a' veya b3 = 'a' gibi kendi aralarındaki aynı değişkenler üzerinde aynı koşulu test etmem gerekiyor. . ve bunun gibi. SAS makrolarında veya açık bir şekilde yazılmasını önlemek için bu görevi yapmak için sas dizilerinden herhangi bir çözüm var mıdır. örnek kod şu şekildedir:Çoklu VEYA karşılaştırması

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; 

yüzden, yaklaşık 50 değişken var aynı koşullarda ve bayrak test etmek.

cevap

2

WHICHN() veya WHICHC() işlevlerini kullanabilirsiniz.

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

Dizi ismiyle IN işleci çalışır, ancak her değişken grubu için bir dizi oluşturmanız gerekir. WHICHN kullanmak daha kolay olurdu.

array d[5]; 
if 1 in d then flag2=1; else flag2=0;