[R] number of patients in a hospital on a given date

Thomas Gerds gerds at fdm.uni-freiburg.de
Wed May 14 16:18:36 CEST 2003


how about this:

x <- data.frame(patid=c("pat1", "pat2"), adm.date = c("15.03.2002","16.03.2002"),dis.date=c("18.03.2002", "17.03.2002"))
x[,2:3] <- apply(x[,2:3], MARGIN=2, FUN=strptime, format="%d.%m.%Y")
alldays <- c("2002-03-14","2002-03-15","2002-03-16","2002-03-17","2002-03-18","2002-03-19")
tmp <- table(unlist(apply(x,
                          1,
                          function(y){
                            beg <- match(y[2],alldays)
                            end <- match(y[3],alldays)
                            alldays[beg:end]})))
nulldays <- alldays[match(alldays,names(tmp),nomatch=0)==0]
out <- rbind(data.frame(days=c(names(tmp),nulldays),freq=c(as.numeric(tmp),rep(0,length(nulldays)))))
out[order(out$days),]

        days freq
5 2002-03-14    0
1 2002-03-15    1
2 2002-03-16    2
3 2002-03-17    2
4 2002-03-18    1
6 2002-03-19    0

tomy

RINNER Heinrich <H.RINNER at tirol.gv.at> writes:

> Dear R-users!
>
> I am using R 1.7.0, under Windows XP.
>
> Having some hospital discharge data (admission date and discharge date for
> each patient), I want to get the number of patients in the hospital on a
> given date.
>
> My data look like (simple example):
>> x <- data.frame(patid=c("pat1", "pat2"), adm.date = c("15.03.2002",
> "16.03.2002"),
>        dis.date=c("18.03.2002", "17.03.2002"))
>
> I can easily do a date-time conversion from the character objects: 
>> x[,2:3] <- apply(x[,2:3], MARGIN=2, FUN=strptime, format="%d.%m.%Y")
>> x
>   patid   adm.date   dis.date
> 1  pat1 2002-03-15 2002-03-18
> 2  pat2 2002-03-16 2002-03-17
>
> What I want in the end is something like a data.frame A like this:
> A
> date		no.of.patients
> 2002-03-14	0
> 2002-03-15	1
> 2002-03-16	2
> 2002-03-17	2
> 2002-03-18	1
> 2002-03-19	0
>
> Or, alternatively, a data.frame B like this:
> B
> patid	date.in.hospital
> pat1	2002-03-15
> pat1	2002-03-16
> pat1	2002-03-17
> pat1	2002-03-18
> pat2	2002-03-16
> pat2	2002-03-17
>
>>From this I could easily get A by using "table".
> So the trick would be to get a data.frame with one line for each day of each
> patient in the hospital - but how?
>
> I'd be happy about any ideas,
> Heinrich Rinner.
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help

-- 
no signature




More information about the R-help mailing list