In the below dataset A, I have 4 names with ID numbers, may I know how to create new ID for the new names in dataset, from 1008 to 1011? Below is sample only, i could have thousands of new names.
DATA A;
INFILE CARDS;
INPUT ID NAME $;
CARDS;
1004 JESSICA
1005 UTAKA
1006 MORRISSON
1007 NELSON
;
RUN;
DATA B;
INFILE CARDS;
INPUT NAME $;
CARDS;
RYAN
HOLLY
MASON
DORREN
;
RUN;
Data want;
set a(in=AI)
B(in=BI);
retain maxid count 0;
if AI and id>MaxID then maxID=ID;
if BI then Do;
count+1;
ID=maxID + count;
end;
run;
This can possibly be simplified massively but it's easy to understand.
Edit: fixed typo. Also, this is untested.
Are you using solely SAS? Many DBs have auto-incrementing IDs which is why I ask.
Yes, SAS only.
Data want;
set a(in=AI)
B(in=BI);
retain maxid count 0;
if AI and id>MaxID then maxID=ID;
if BI then Do;
count+1;
ID=maxID + count;
end;
run;
This can possibly be simplified massively but it's easy to understand.
Edit: fixed typo. Also, this is untested.
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.