SAS Programming

DATA Step, Macro, Functions and more
BookmarkSubscribeRSS Feed
☑ This topic is solved. Need further help from the community? Please sign in and ask a new question.
MrTAL
Fluorite | Level 6

Hi, I have a variable called "Customer_Comment " (a string) with free text and I need to extract rest of the comment after specific word.

 

Word word word word word KEYword word word word word word

Word word KEYword word word word word

Word word word word word

Word word word word word word word word KEYword word word word.

 

The comments are something like above and what I need is to extract all the text after the key word, if the Keyword exists in the comment, so the result would be like below..

 

word word word word word.

word word word word.

word word word.

 

I have tried few functions such as SCAN,FIND,SUBSTR but couldn't get it done, so any help is much appreciated!

1 ACCEPTED SOLUTION

Accepted Solutions
PaigeMiller
Diamond | Level 26

UNTESTED CODE

 

data want;
    set have;
    where=find(customer_comment,'KEYword');
    remaining_text=substr(customer_comment,where+length('KEYword'));
run;
--
Paige Miller

View solution in original post

7 REPLIES 7
PaigeMiller
Diamond | Level 26

UNTESTED CODE

 

data want;
    set have;
    where=find(customer_comment,'KEYword');
    remaining_text=substr(customer_comment,where+length('KEYword'));
run;
--
Paige Miller
MrTAL
Fluorite | Level 6
Thank you so much.. it worked..
HarrySnart
SAS Employee
Hi, do you have access to Visual Text Analytics? This would be straightforward with LITI syntax in a concept rule. Otherwise you might want to try regular expressions. For example you could use PRXMATCH to match against the pattern then return the remained or the string.

You might try something like this if the data is simple enough:

data want;
set have;
*find pattern location (add 7 to discard keyword);
position = prxmatch('/KEYword/',text) + 7;
*substring remainder of text;
if position gt 7 then out = substr(text,position);
keep text position out;
run;
MrTAL
Fluorite | Level 6
Thank you so much.. this works tooo
MrTAL
Fluorite | Level 6
and.. Unfortunately I don't have access to Visual Text Analytics. I work with SAS EG. However your solution worked.. So all good.
Oligolas
Barite | Level 11
want=prxchange('s/.*?KEYword(.*)/$1/',-1,have);

as for example in

DATA demo;
   LENGTH have want $100;
   have="Word word word word word KEYword word1 word2 word3 word4 word5";
   want=prxchange('s/.*?KEYword(.*)/$1/',-1,have);
RUN;
________________________

- Cheers -

MrTAL
Fluorite | Level 6
Thank you so much.. All these solutions do work

sas-innovate-white.png

Our biggest data and AI event of the year.

Don’t miss the livestream kicking off May 7. It’s free. It’s easy. And it’s the best seat in the house.

Join us virtually with our complimentary SAS Innovate Digital Pass. Watch live or on-demand in multiple languages, with translations available to help you get the most out of every session.

 

Register now!

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
  • 7 replies
  • 2836 views
  • 3 likes
  • 4 in conversation