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
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.