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 Super FREQ
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 2024

Innovate_SAS_Blue.png

Registration is open! SAS is returning to Vegas for an AI and analytics experience like no other! Whether you're an executive, manager, end user or SAS partner, SAS Innovate is designed for everyone on your team. Register for just $495 by 12/31/2023.

If you are interested in speaking, there is still time to submit a session idea. More details are posted on the website. 

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.

Get the $99 certification deal.jpg

 

 

Back in the Classroom!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 7 replies
  • 459 views
  • 3 likes
  • 4 in conversation