Ricardo Pietrobon <[EMAIL PROTECTED]> writes:

> ID    date            cost
> 1     "2001-01"       200.00
> 1     "2001-01"       123.94
> 1     "2001-03"       100.23
> 1     "2001-04"       150.34
> 2     "2001-03"       296.34
> 2     "2002-05"       156.36
> 
> 
> I would like to obtain the median costs and boxplots for the sum of
> encounters happening in the first six months after the index encounter
> (first patient encounter) for each patient, then the mean and median costs
> for the costs happening from 6 to 12 months after the index encounter, and
> so on. Notice that the first ID has two encounters during the index date,
> making it more difficult to define a single row with the index encounter.
> 
> Any help would be appreciated,

Let's see... You're going to need a bit of slight ugliness to convert
the date to a numeric month number. Something like (NB: That's a code
that means "I didn't actually try this"...)

attach(yourdata)
monthnum <- sapply(strsplit(date,"-"),function(x)sum(as.numeric(x)*c(12,1)))

Then we need a table of the index dates for each person

tbl <- tapply(monthnum, ID, min)

Now subtract the index date from monthnum

months.post.index <- monthnum - tbl[ID]

then you probably want to look at the subset of your original data
frame and do the sums

total.cost.6mo <- with(subset(yourdata,months.post.index < 6), 
                       tapply(cost,ID,sum))

and finally

boxplot(total.cost.6mo)
median(total.cost.6mo)

(You could elaborate by converting months.post.index with cut() and
use lapply(names(period),.....) to give you a list of tables, which
boxplot() might actually know how to plot directly.)
-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - ([EMAIL PROTECTED])             FAX: (+45) 35327907

______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help

Reply via email to