Hi all,
If I have values that consistently are in this type of layout- (that is a wanted character string between ( x) and a (char date.)..
AE: (6) urinary tract infection 22-NOV-2017
Is there a way to just extract the 'urinary tract infection' to a new variable?
Help is appreciated!
data have;
input var $80.;
call scan(var,-1,position, length,' ');
k1=index(var,')');
need= substr(var,index(var,')')+1,position-k1-1);
drop k: position length;
cards;
AE: (6) urinary tract infection 22-NOV-2017
;
data have;
input var $80.;
call scan(var,-1,position, length,' ');
k1=index(var,')');
need= substr(var,index(var,')')+1,position-k1-1);
drop k: position length;
cards;
AE: (6) urinary tract infection 22-NOV-2017
;
@novinosrin thank you! HUGE help!!!
@jenim514 You could mark the question as answered and close the thread
If you data looks like the example you showed i.e. you have lowercase for the string you want to extract remaning other than lowercase then you can use COMPRESS() function with "k" (keeps the characters in the list instead of removing them) and "l" modifier (adding lowercase to list).
DATA HAVE;
STRING="AE: (6) urinary tract infection 22-NOV-2017";
Want_Str=STRIP(COMPRESS(STRING,"","kl"));
run;
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.