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;
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.