SAS Programming

DATA Step, Macro, Functions and more
BookmarkSubscribeRSS Feed
Kimbraun1
Calcite | Level 5

Hi!

I'm trying to create a counter variable with multiple conditions. Please see below: the table includes the data in days and the counter I'm trying to program.

 

1.  This is all within a subject.  If first subject then start counter = 1.

2. if Days  >120 and the lag of the previous Day > 60 then counter =1 if this is the first observation meeting this criteria,

3. If Days >120 and lag of previous Day is <60 then don't add to the counter, rather this observation gets the same as the previous counter number.

4. If Days greater than 0 and LE 120 then +1 to the counter and all other observations <120 are the same counter value.

5. If Days is <0 then counter+1 for each instance. 

Thank you for any and all assistance.

 

 

DaysCounter
25141
1412
993
543
03
-2054
-2905
3 REPLIES 3
PaigeMiller
Diamond | Level 26

Your rules are incomplete. If days > 120 and previous day = 60 exactly, you don't say what should happen. If days is exactly equal to zero, you don't say what should happen.

 

Also, your rules 1 and 2 seem to indicate that the counter starts at 1, then it can change, and then go back to 1 if rule 2 is satisfied, is this correct?

--
Paige Miller
Kimbraun1
Calcite | Level 5

Hi Paige,

Thanks for your reply.  The 60 should be <= 60 and >= 0.  Yes, the counter starts at 1 each time, but will advance sequentially and not reset at 1 at any point.

 

I so appreciate your help and responsiveness.

PaigeMiller
Diamond | Level 26
data want;
    set have;
    by id;
    if first.id then counter=1;
    prev_days=lag(days);
    if days>120 and prev_day>60 then counter=1; /* This condition still doesn't make sense to me */
    else if days>=0 and days<=120 and prev_day>120 then counter+1;
    else if days<0 then counter+1;
run;
--
Paige Miller

sas-innovate-white.png

Special offer for SAS Communities members

Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.

 

View the full agenda.

Register now!

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 3 replies
  • 1357 views
  • 0 likes
  • 2 in conversation