DATA Step, Macro, Functions and more

How to remove last repeated same word more then once?

Reply
Frequent Contributor
Posts: 81

How to remove last repeated same word more then once?

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

 

 

Required Output:

 

abc           %ak%

hjk             %kl%

hygllllkjk    %ko%

 

PROC Star
Posts: 8,115

Re: How to remove last repeated same word more then once?

Posted in reply to rajeshalwayswel

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

Super User
Super User
Posts: 9,227

Re: How to remove last repeated same word more then once?

Posted in reply to rajeshalwayswel

Assumes your test data reflects your data!:

data want;
set have;
name=scan(a,1);
other=scan(a,2,"%");
run;
Super User
Posts: 10,621

Re: How to remove last repeated same word more then once?

Posted in reply to rajeshalwayswel
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;
Ask a Question
Discussion stats
  • 3 replies
  • 126 views
  • 0 likes
  • 4 in conversation