Hi,
By way of example, I have two groups of strings as shown below, a1-a3 and b1-b3.
I want to know if at least one of the strings in a1-a3 is equal to at least one of the strings in b1-b3. Then flag the rows which satisfy this.
I imagine this will be done using arrays and a do loop. I realise my attempt in the code below will only work if all a1-a3 are identical to b1-b3.
I would really appreciate some help here.
Thanks a lot
Matt
data table ;
input a1 $ a2 $ a3 $ b1 $ b2 $ b3 $ match $ ;
cards ;
a b c a b c Yes
a b c a d e Yes
a b c d e f no
a b c a b e Yes
;
run ;
data table ;
set table ;
array check1 a1-a3 ;
array check2 b1-b3 ;
do i=1 to 3 ;
if check1(i)=check2(i) then match =1 ;
else match=0 ;
end ;
run ;
Something like:
data table ; input a1 $ a2 $ a3 $ b1 $ b2 $ b3 $; cards ; a b c a b c a b c a d e a b c d e f a b c a b e ; run; data want; set table; array a{3}; do i=1 to dim(a); if whichc(a{i},of b:) then match="yes"; end; run;
Just a little change in the logic:
data table;
set table;
array check1 a1-a3;
array check2 b1-b3;
match = 0;
do i = 1 to 3;
if check1{i} = check2{i} then match = 1;
end;
run;
Thank you so much pal
Something like:
data table ; input a1 $ a2 $ a3 $ b1 $ b2 $ b3 $; cards ; a b c a b c a b c a d e a b c d e f a b c a b e ; run; data want; set table; array a{3}; do i=1 to dim(a); if whichc(a{i},of b:) then match="yes"; end; run;
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.