BookmarkSubscribeRSS Feed
rajeshalwayswel
Pyrite | Level 9

data have;
input a $ 30.;
cards;
abc %ak% %ak%
hjk %kl% %kl%
hygllllkjk %ko% %ko%
run;

 

 

Required Output:

 

abc           %ak%

hjk             %kl%

hygllllkjk    %ko%

 

3 REPLIES 3
art297
Opal | Level 21

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

RW9
Diamond | Level 26 RW9
Diamond | Level 26

Assumes your test data reflects your data!:

data want;
set have;
name=scan(a,1);
other=scan(a,2,"%");
run;
Ksharp
Super User
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;
How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 3 replies
  • 1252 views
  • 0 likes
  • 4 in conversation