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
if _n_=1 then do ..
or initialize with retain statement
retain obs 0
You can also try:
Sequence=_n_;
if _n_=1 then do ..
or initialize with retain statement
retain obs 0
You can also try:
Sequence=_n_;
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;
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_;
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
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and save with the early bird rate—just $795!
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.
Ready to level-up your skills? Choose your own adventure.