Hi...I am having problems with incrementing a count. For each ID, starting at 1 and increment by 1 when their is a change in the Program type and retain the count and increment by 1 when there is another change in the Program type. Thanks.
DATA GROUP58B;
SET GROUP58A;
COUNT+1;
RETAIN COUNT;
BY ID;
IF FIRST.ID THEN COUNT=1;
IF ID = LAG(ID) AND PROGRAM = LAG(PROGRAM) THEN COUNT = 1;
RUN;
Have:
DATE | ID | PROGRAM | COUNT |
20130219 | 130439 | HCP | 1 |
20140121 | 130439 | HCP | 1 |
20140403 | 130439 | HCP | 1 |
20160314 | 130439 | PCP | 2 |
20160314 | 130439 | PCP | 1 |
20160415 | 130439 | PCP |
1 |
Want:
DATE | ID | PROGRAM | COUNT |
20130219 | 130439 | HCP | 1 |
20140121 | 130439 | HCP | 1 |
20140403 | 130439 | HCP | 1 |
20160314 | 130439 | PCP | 2 |
20160314 | 130439 | PCP | 2 |
20160415 | 130439 | PCP | 2 |
DATA GROUP58B;
SET GROUP58A;
COUNT+1; *wrong position, this would be the first step, move it later in the program;
RETAIN COUNT;
BY ID;
IF FIRST.ID THEN COUNT=1;
IF ID = LAG(ID) AND PROGRAM = LAG(PROGRAM) THEN COUNT = 1; *This doesn't make sense, its what you use first for to avoid checking previous values;
RUN;
See comments in code above.
The code below should work
DATA GROUP58B;
SET GROUP58A;
RETAIN COUNT;
BY ID PROGRAM;
IF FIRST.ID THEN COUNT=0;
if first.program then count+1;
RUN;
DATA GROUP58B;
SET GROUP58A;
COUNT+1; *wrong position, this would be the first step, move it later in the program;
RETAIN COUNT;
BY ID;
IF FIRST.ID THEN COUNT=1;
IF ID = LAG(ID) AND PROGRAM = LAG(PROGRAM) THEN COUNT = 1; *This doesn't make sense, its what you use first for to avoid checking previous values;
RUN;
See comments in code above.
The code below should work
DATA GROUP58B;
SET GROUP58A;
RETAIN COUNT;
BY ID PROGRAM;
IF FIRST.ID THEN COUNT=0;
if first.program then count+1;
RUN;
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 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.