data have;
input a $ 30.;
cards;
abc %ak% %ak%
hjk %kl% %kl%
hygllllkjk %ko% %ko%
run;
Required Output:
abc %ak%
hjk %kl%
hygllllkjk %ko%
Here is one way:
data have;
informat a $30.;
length b $30;
input a &;
cards;
abc %ak% %ak%
hjk %kl% %kl%
hygllllkjk %ko% %ko%
;
run;
data want (drop=i j);
set have;
array test(999) $ _temporary_;
i=1;
j=0;
do while (scan(a,i,' ') ne '');
if scan(a,i,' ') not in test then do;
j+1;
test(j)=scan(a,i,' ');
end;
i+1;
end;
do i=1 to j;
b=catx(' ',b,test(i));
end;
run;
Art, CEO, AnalystFinder.com
Assumes your test data reflects your data!:
data want;
set have;
name=scan(a,1);
other=scan(a,2,"%");
run;
data have;
input a $30.;
cards;
abc %ak% %ak%
hjk %kl% %kl%
hygllllkjk %ko% %ko%
hygllllkjk %ko%
;
run;
data want;
set have;
want=prxchange('s/(\s+\S+)(\1)+$/\1/',-1,strip(a));
run;
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
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.
Ready to level-up your skills? Choose your own adventure.