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;
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.