BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
desireatem
Pyrite | Level 9

id gap
001 0
001 1
001 2
002 0
002 2
002 1
003 0
003 1
003 1
004 0
004 2
004 2
005 0
;

Once gap is a 1 in any position for a particular id, gap=1 for all visit for that particular id.

if gap is 0, 2, without one, then for that id gap=2 for both position ie, we change the 0 to 2.

that above data will Change to:

id gap
001 1
001 1
001 1
002 1
002 1
002 1
003 1
003 1
003 1
004 2
004 2
004 2
005 0
;

1 ACCEPTED SOLUTION

Accepted Solutions
Astounding
PROC Star

This probably comes close enough:

 

data want;

do until (last.id);

   set have;

   by id;

   if gap=1 then new_gap=1;

   else if gap=2 and new_gap=. then new_gap=2;

end;

do until (last.id);

   set have;

   by id;

   if new_gap > . then gap = new_gap;

   output;

end;

drop new_gap;

run;

 

When I say comes "close enough", the program doesn't check for 0 and 2.  It checks for 2 (but without 1).

 

The top loop reads all the observations for an ID, looking at the GAP values.  Then the bottom loop re-reads the same observations, changes GAP, and outputs.

View solution in original post

2 REPLIES 2
Astounding
PROC Star

This probably comes close enough:

 

data want;

do until (last.id);

   set have;

   by id;

   if gap=1 then new_gap=1;

   else if gap=2 and new_gap=. then new_gap=2;

end;

do until (last.id);

   set have;

   by id;

   if new_gap > . then gap = new_gap;

   output;

end;

drop new_gap;

run;

 

When I say comes "close enough", the program doesn't check for 0 and 2.  It checks for 2 (but without 1).

 

The top loop reads all the observations for an ID, looking at the GAP values.  Then the bottom loop re-reads the same observations, changes GAP, and outputs.

desireatem
Pyrite | Level 9

Thank you very much!!!!

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

How to connect to databases in SAS Viya

Need to connect to databases in SAS Viya? SAS’ David Ghan shows you two methods – via SAS/ACCESS LIBNAME and SAS Data Connector SASLIBS – in this video.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 2 replies
  • 849 views
  • 0 likes
  • 2 in conversation