DATA Step, Macro, Functions and more

SEQUENTIAL NUMBER CREATION

Accepted Solution Solved
Reply
Contributor scb
Contributor
Posts: 50
Accepted Solution

SEQUENTIAL NUMBER CREATION

 

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;


Accepted Solutions
Solution
‎01-26-2017 09:46 PM
Super User
Posts: 17,770

Re: SEQUENTIAL NUMBER CREATION

[ Edited ]

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. 

View solution in original post


All Replies
Super User
Posts: 17,770

Re: SEQUENTIAL NUMBER CREATION

Are you using solely SAS? Many DBs have auto-incrementing IDs which is why I ask. 

 

Contributor scb
Contributor
Posts: 50

Re: SEQUENTIAL NUMBER CREATION

Yes, SAS only. 

Solution
‎01-26-2017 09:46 PM
Super User
Posts: 17,770

Re: SEQUENTIAL NUMBER CREATION

[ Edited ]

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. 

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 3 replies
  • 118 views
  • 0 likes
  • 2 in conversation