OK. No problem.
data have;
input Year Study Term : $20. LLT $;
if missing(LLT) then LLT='NA';
cards;
2000 123 nausea C
2000 456 nausea B
2001 789 nausea A
2001 442 nausea A
2000 234 headache ache
2001 423 headache ache
2000 123 toothpain pain
2000 234 toothpain ache
2001 423 toothpain ache
2001 23 headache pain
2001 234 headache pain
2002 123 headache pain
2002 456 headache .
;
run;
data want;
length list $ 2000 LLT_TERM comments $ 80;
n=0;
do until(last.term);
set have;
by term notsorted;
n+1;
if not findw(list,strip(llt),'; ') then list=catx(';',list,llt);
end;
flag=countw(list,';');
do until(last.term);
set have;
by term notsorted;
if flag=1 then do;comments=' '; LLT_TERM='matched'; end;
else do;comments=list; LLT_TERM=' Codes do not match';end;
output;
end;
drop n flag list;
run;
data final_want;
set want;
length new_comments $ 2000;
array x{999} $ 40;
do i=1 to countw(comments,';');
x{i}=scan(comments,i,';');
if x{i}='NA' then x{i}=' ';
end;
call sortc(of x{*});
new_comments='Comparing with: '||catx(';',of x{*});
drop comments x1-x999 i;
run;
... View more