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;
Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.
Register today!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.