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;
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.