Hi all!
I have a data set with a bunch of IDs as string variable like eg.below. I want to delete all the characters from "(" and include only the numbers before "(" for each ID. Any help with SAS code is much appreciated.
Thanks!
ID
48 (500_82)
49 (501_82)
Want:
ID_New
48
49
Hi @sms1891 Perhaps you could try scan knowing the separator '(' would of course be the first to split the string
data have;
input id $20.;
cards;
48 (500_82)
49 (501_82)
40
;
data want;
set have;
want=scan(id,1,'(');
run;
data have;
input ID $20.;
infile datalines dlm='';
datalines;
48 (500_82)
49 (501_82)
;
data want;
set have;
ID_New=substr(ID, 1, find(ID, '(')-1);
run;
If your pattern is not so consistent with some records not having the special character like the 3rd in the modified sample, the following should work
data have;
input id $20.;
cards;
48 (500_82)
49 (501_82)
40
;
data want;
set have;
if find(id,'(')>0 then want=substr(id,1,find(id,'(')-1);
else want=id;
run;
Hi @sms1891 Perhaps you could try scan knowing the separator '(' would of course be the first to split the string
data have;
input id $20.;
cards;
48 (500_82)
49 (501_82)
40
;
data want;
set have;
want=scan(id,1,'(');
run;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.