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.
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.