DATA Step, Macro, Functions and more

overlapping date observations

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 6
Accepted Solution

overlapping date observations

I've got dates describing periodes (start end) and a variable describing waiting time (wt). However, the dates are partialle overlapping. This is nearly fixed in the attached program but I would like to have latest observation of wt to be placed in correctly. Anyone?

Attachment

Accepted Solutions
Solution
‎01-05-2017 12:06 PM
Contributor
Posts: 24

Re: overlapping date observations

[ Edited ]

Hi.

 

If I got this right, you just need to sort the data correctly and fetch the previous stdate between by groups.

 

* sort reversing stdate (recent to later);
proc sort data=waits;
     by hospid diag descending stdate;

run;

* adjust overlapping between by groups;
data waits2;
     set waits;
     format stdate enddate date9.;
     drop _:;
     by hospid diag;

     * fetch previous stdate;
     _enddate=lag1(stdate);
     * skip first by group row, fix overlapping;
     if not first.diag then enddate=min(enddate,_enddate-1);

run;

* sort back (later to recent);
proc sort;
     by hospid diag stdate;
run

 

lagN functions will retrieve the previous Nth row value of PDV.

 

More here: http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000212547.htm

 

The rest is just pure data step logic.

 

Hope it helps.

 

Daniel Santos @ www.cgd.pt

View solution in original post


All Replies
Trusted Advisor
Posts: 1,372

Re: overlapping date observations

You have similar situation as in next post.See solution - it fits your case:

 

https://communities.sas.com/t5/General-SAS-Programming/Sorting-overlapping-dates-and-address-histori...

Solution
‎01-05-2017 12:06 PM
Contributor
Posts: 24

Re: overlapping date observations

[ Edited ]

Hi.

 

If I got this right, you just need to sort the data correctly and fetch the previous stdate between by groups.

 

* sort reversing stdate (recent to later);
proc sort data=waits;
     by hospid diag descending stdate;

run;

* adjust overlapping between by groups;
data waits2;
     set waits;
     format stdate enddate date9.;
     drop _:;
     by hospid diag;

     * fetch previous stdate;
     _enddate=lag1(stdate);
     * skip first by group row, fix overlapping;
     if not first.diag then enddate=min(enddate,_enddate-1);

run;

* sort back (later to recent);
proc sort;
     by hospid diag stdate;
run

 

lagN functions will retrieve the previous Nth row value of PDV.

 

More here: http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000212547.htm

 

The rest is just pure data step logic.

 

Hope it helps.

 

Daniel Santos @ www.cgd.pt

Occasional Contributor
Posts: 6

Re: overlapping date observations

Thanks! worked well.

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 3 replies
  • 185 views
  • 3 likes
  • 3 in conversation