Date: Mon, 16 Mar 2009 11:08:36 -0500
Reply-To: Joe Matise <snoopy369@GMAIL.COM>
Sender: "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From: Joe Matise <snoopy369@GMAIL.COM>
Subject: Re: How to collapse consecutive visits
In-Reply-To: <200903161531.n2GAlHB3025992@malibu.cc.uga.edu>
Content-Type: text/plain; charset=ISO-8859-1
Sophia,
What do you consider adequately close together to be one A-D pair? Does it
have to be a single day only (4/4 to 4/5) or can it be longer?
If it's just a single day difference, you can do this:
data have;
informat admit discharge MMDDYY10.;
informat id $12.;
input
ID $ admit discharge ;
datalines;
90179392E 7/18/2007 7/18/2007
90256373a 9/7/2007 9/7/2007
90256373a 11/6/2007 11/6/2007
90256373a 11/7/2007 11/7/2007
90256373a 12/2/2007 12/2/2007
90256373a 12/3/2007 12/3/2007
90256373a 12/4/2007 12/4/2007
90256373a 12/5/2007 12/5/2007
90256373a 12/6/2007 12/6/2007
90256373a 12/7/2007 12/7/2007
90256373a 12/8/2007 12/8/2007
90256373a 4/10/2008 4/10/2008
90256373a 4/11/2008 4/11/2008
90256373a 4/12/2008 4/12/2008
90256373a 4/13/2008 4/13/2008
90256373a 4/14/2008 4/14/2008
90256373a 4/15/2008 4/15/2008
90256373a 4/16/2008 4/16/2008
90294928A 4/7/2008 4/7/2008
90294928A 4/7/2008 4/11/2008
90536782A 4/10/2008 4/10/2008
90536782A 4/11/2008 4/11/2008
90536782A 4/12/2008 4/12/2008
90536782A 4/13/2008 4/13/2008
90536782A 4/14/2008 4/14/2008
90536782A 4/15/2008 4/15/2008
90536782A 4/16/2008 4/16/2008
;;;;;
run;
proc sort data=have; by id admit;
run;
data want;
retain prev_dschg first_admit;
keep id first_admit final_dschg;
set have;
by id admit;
if first.id or last.id then do;
if first.id then do;
first_admit = admit;
end;
if last.id then do;
final_dschg = discharge;
output;
end;
end;
else do;
if prev_dschg < admit - 1 then do;
final_dschg = prev_dschg;
output;
first_admit = admit;
call missing(final_dschg);
end;
*else output;
end;
prev_dschg = discharge;
run;
and then merge that dataset back onto the regular dataset. I imagine a
double DoW loop could do it a bit more efficiently but I'm not entirely sure
how to do that when there's possibly multiple 'by groups' per actual by
group.
-Joe
On Mon, Mar 16, 2009 at 10:31 AM, Sophia Tong <sophiDT@hotmail.com> wrote:
> Dear listers,
>
> I have a admission - discharge data of patients. There are situations that
> a patient had back to back admission - discharge, in that case, it should
> count as one admission-discharge. I am truggling how to flag them out.
> Below are the data I have and the outcome data I want.
>
> Thanks in advance,
>
> Sophia
>
> Data have:
> ID admit discharge
> 90179392E 7/18/2007 7/18/2007
> 90256373a 9/7/2007 9/7/2007
> 90256373a 11/6/2007 11/6/2007
> 90256373a 11/7/2007 11/7/2007
> 90256373a 12/2/2007 12/2/2007
> 90256373a 12/3/2007 12/3/2007
> 90256373a 12/4/2007 12/4/2007
> 90256373a 12/5/2007 12/5/2007
> 90256373a 12/6/2007 12/6/2007
> 90256373a 12/7/2007 12/7/2007
> 90256373a 12/8/2007 12/8/2007
> 90256373a 4/10/2008 4/10/2008
> 90256373a 4/11/2008 4/11/2008
> 90256373a 4/12/2008 4/12/2008
> 90256373a 4/13/2008 4/13/2008
> 90256373a 4/14/2008 4/14/2008
> 90256373a 4/15/2008 4/15/2008
> 90256373a 4/16/2008 4/16/2008
> 90294928A 4/7/2008 4/7/2008
> 90294928A 4/7/2008 4/11/2008
> 90536782A 4/10/2008 4/10/2008
> 90536782A 4/11/2008 4/11/2008
> 90536782A 4/12/2008 4/12/2008
> 90536782A 4/13/2008 4/13/2008
> 90536782A 4/14/2008 4/14/2008
> 90536782A 4/15/2008 4/15/2008
> 90536782A 4/16/2008 4/16/2008
>
> data want:
>
> ID admit discharge AD DC
> 90179392E 7/18/2007 7/18/2007 7/18/2007 7/18/2007
> 90256373a 9/7/2007 9/7/2007 9/7/2007 9/7/2007
> 90256373a 11/6/2007 11/6/2007 11/6/2007 11/7/2007
> 90256373a 11/7/2007 11/7/2007
> 90256373a 12/2/2007 12/2/2007 12/2/2007 12/8/2007
> 90256373a 12/3/2007 12/3/2007
> 90256373a 12/4/2007 12/4/2007
> 90256373a 12/5/2007 12/5/2007
> 90256373a 12/6/2007 12/6/2007
> 90256373a 12/7/2007 12/7/2007
> 90256373a 12/8/2007 12/8/2007
> 90256373a 4/10/2008 4/10/2008 4/10/2008 4/16/2008
> 90256373a 4/11/2008 4/11/2008
> 90256373a 4/12/2008 4/12/2008
> 90256373a 4/13/2008 4/13/2008
> 90256373a 4/14/2008 4/14/2008
> 90256373a 4/15/2008 4/15/2008
> 90256373a 4/16/2008 4/16/2008
> 90294928A 4/7/2008 4/7/2008 4/7/2008 4/11/2008
> 90294928A 4/7/2008 4/11/2008
> 90536782A 4/10/2008 4/10/2008 4/10/2008 4/16/2008
> 90536782A 4/11/2008 4/11/2008
> 90536782A 4/12/2008 4/12/2008
> 90536782A 4/13/2008 4/13/2008
> 90536782A 4/14/2008 4/14/2008
> 90536782A 4/15/2008 4/15/2008
> 90536782A 4/16/2008 4/16/2008
>