Dear All,
I have dataset with the one variable X. I would like to write a query to exclude the first numerical, special character part and start reading from the first occurrence of the alphabet.
10 - SEASONAL ALLERGIES - UN/UNK/1954
3333 ** COMMON COLD - 10/JAN/2015
222 ### RECURRENT SINUSITIS - UN/UNK/2003
44444 @@ INSOMNIA - UN/UNK/2008
The output should look like this.
SEASONAL ALLERGIES - UN/UNK/1954
COMMON COLD - 10/JAN/2015
RECURRENT SINUSITIS - UN/UNK/2003
INSOMNIA - UN/UNK/2008
Thanks in advance
Rakesh
You could use the VERIFY() function.
data have;
input x $60.;
cards4;
10 - SEASONAL ALLERGIES - UN/UNK/1954
3333 ** COMMON COLD - 10/JAN/2015
222 ### RECURRENT SINUSITIS - UN/UNK/2003
44444 @@ INSOMNIA - UN/UNK/2008
;;;;
data want ;
set have ;
x=substr(x,max(1,verify(x,'012345678 -+*#@')));
run;
You could use the VERIFY() function.
data have;
input x $60.;
cards4;
10 - SEASONAL ALLERGIES - UN/UNK/1954
3333 ** COMMON COLD - 10/JAN/2015
222 ### RECURRENT SINUSITIS - UN/UNK/2003
44444 @@ INSOMNIA - UN/UNK/2008
;;;;
data want ;
set have ;
x=substr(x,max(1,verify(x,'012345678 -+*#@')));
run;
You could also substr from the first occurence of an alphabetic character:
new_var=substr(findc(old_var,"","a"));
This will substring from first alpha character to the end.
I don't like Tom's code . data have; input x $60.; cards4; 10 - SEASONAL ALLERGIES - UN/UNK/1954 3333 ** COMMON COLD - 10/JAN/2015 222 ### RECURRENT SINUSITIS - UN/UNK/2003 44444 @@ INSOMNIA - UN/UNK/2008 ;;;; data want ; set have ; x=substr(x,max(1,verify(x,'012345678 -+*#@'))); me=substr(x,prxmatch('/[a-z]/i',x)); 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.