DATA Step, Macro, Functions and more

How to determine the first observation in a data set

Accepted Solution Solved
Reply
Regular Contributor
Posts: 216
Accepted Solution

How to determine the first observation in a data set

I want to add a simple sequence number to a data set with no 'by' variable. Does anyone know how to identify the first observation in a data set so I can set this to zero and everything following it will just be an increment?

Paul


Accepted Solutions
Solution
‎02-13-2015 03:19 PM
Super User
Posts: 19,837

Re: How to determine the first observation in a data set

if _n_=1 then do ..

or initialize with retain statement

retain obs 0

You can also try:

Sequence=_n_;

View solution in original post


All Replies
Solution
‎02-13-2015 03:19 PM
Super User
Posts: 19,837

Re: How to determine the first observation in a data set

if _n_=1 then do ..

or initialize with retain statement

retain obs 0

You can also try:

Sequence=_n_;

Regular Contributor
Posts: 216

Re: How to determine the first observation in a data set

That works fine: if _n_=1 then do ... Thanks Reeza. One somewhat related follow up, when I increment using lag, it is not working in this instance. Do yo or anyone usually use lag for something like this?

Paul

data uniquemediator1;

set uniquemediator;

if _n_=1 then do;

MedNum=1;

end;

if _n_ ne 1 then do;

MedNum=lag(MedNum)+1;

end;

run;

Super User
Posts: 19,837

Re: How to determine the first observation in a data set

Lag doesn't work in conditional if/then statements. There are papers written on this topic so you can search for those if you're interested.

I would use the following myself:

MedNum=_n_;

Regular Contributor
Posts: 216

Re: How to determine the first observation in a data set

Thanks Reeza. I think I remember that now actually. Sorry and thanks again.

And the _n_ works nicely when you don't need a 'by' variable grouping.

Paul

🔒 This topic is solved and locked.

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

Discussion stats
  • 4 replies
  • 258 views
  • 3 likes
  • 2 in conversation