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;
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 lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.