Hi all;
I am trying to enumerate a group with a counter-
So for example if I have data that looks like this-
FAC YEAR
A 2008
A 2009
A 2010
B 2008
B 2009
B 2010
What I want is
FAC YEAR CT
A 2008 1
A 2009 1
A 2010 1
B 2008 2
B 2009 2
B 2010 2
The code I have currently is:
DATA plots2;
CT+1;
SET plots;
BY FAC_ID;
IF FIRST.FAC_ID THEN CT=1;
RUN;
Which gives me:
FAC YEAR CT
A 2008 1
A 2009 2
A 2010 3
B 2008 1
B 2009 2
B 2010 3
Which is not what I want. Any help appreciated. I have attempted to use lag & retain functions, much to the same effect.
Thanks
Lawrence
You were almost there...
DATA plots2;
SET plots;
BY FAC_ID;
IF FIRST.FAC_ID THEN CT+1;
RUN;
or simpler still
DATA plots2;
SET plots;
BY FAC_ID;
CT + FIRST.FAC_ID;
RUN;
PG
You were almost there...
DATA plots2;
SET plots;
BY FAC_ID;
IF FIRST.FAC_ID THEN CT+1;
RUN;
or simpler still
DATA plots2;
SET plots;
BY FAC_ID;
CT + FIRST.FAC_ID;
RUN;
PG
Many Thanks PG!
Lawrence
If using DOW:
DATA plots2;
do until (last.fac_id);
SET plots;
BY FAC_ID;
CT=_n_;
output;
end;
RUN;
Haikuo
Or lag function.
IF FAC_ID ne lag(FAC_ID ) THEN CT+1;
Ksharp
Thanks everyone. I knew I was close but this helped !
Lawrence
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 the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.