At 20:18 13.07.2009, Charles C. Berry wrote:
> On Mon, 13 Jul 2009, Heinz Tuechler wrote:
>
> > Dear All,
> >
> > since years I am struggling with Surv objects in data.frames. The
> > following seems to have to do with it.
> > See below the modified example from the help page of survSplit. The
> > original works, as expected. If, however, a Surv object is added to
> > the data.frame, each record gets doubled.
> > Is there some solution other than avoiding Surv objects in
> > data.frames?
>
> I think you can modify survSplit so that it will properly handle Surv
> objects.
>
> Change this line:
>
> newdata <- lapply(data, rep, ntimes + 1)
>
> to this:
>
> newdata <- lapply(data,
> function(x) {
> x <- as.matrix(x)
> x[rep(1:nrow(x), ntimes + 1),]
> })
>
> or something similar that results Surv objects being rep()'ed rowwise
> rather than elementwise and returned as objects of the right dimension
> (rather than as a vector).
>
> Caveat: This works in the example you give, but I've not tested this
> extensively.
>
> HTH,
>
> Chuck
>
>
>
> >
> > Thanks,
> > Heinz
> >
> >
> > require(survival)
> >
> > ## from the help page
> > aml3<-survSplit(aml,cut=c(5,10,50),end="time",start="start",
> > event="status",episode="i")
> >
> > summary(aml)
> > summary(aml3)
> >
> > coxph(Surv(time,status)~x,data=aml)
> > ## the same
> > coxph(Surv(start,time,status)~x,data=aml3)
> >
> > ## added to show doubling of records
> > aml.so <- aml
> > aml.so$surv.object <- with(aml, Surv(time, status))
> >
> > aml3.so <- survSplit(aml.so ,cut=c(5,10,50),end="time",start="start",
> > event="status",episode="i")
> > summary(aml3.so)
> >
> > sessionInfo('survival')
> > R version 2.9.1 Patched (2009-07-07 r48910)
> > i386-pc-mingw32
> >
> > locale:
> >
LC_COLLATE=German_Switzerland.1252;LC_CTYPE=German_Switzerland.1252;LC_MONETARY=German_Switzerland.1252;LC_NUMERIC=C;LC_TIME=German_Switzerland.1252
> >
> > attached base packages:
> > character(0)
> >
> > other attached packages:
> > [1] survival_2.35-4
> >
> > loaded via a namespace (and not attached):
> > [1] base_2.9.1 graphics_2.9.1 grDevices_2.9.1 methods_2.9.1
> > [5] splines_2.9.1 stats_2.9.1 utils_2.9.1
> >
> > ______________________________________________
> > R-help@r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide
> > http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained, reproducible code.
>
> Charles C. Berry (858) 534-2098
> Dept of Family/Preventive
> Medicine
> E mailto:cbe...@tajo.ucsd.edu UC San Diego
> http://famprevmed.ucsd.edu/faculty/cberry/ La Jolla, San Diego
> 92093-0901
Thank you Chuck,
it seems to work also with my real data, but I noted that in the example
aml$x, which is a factor, gets converted to character in aml3.so. Maybe,
if I find the time, I should look at as.data.frame.matrix and rbind for
Surv objects.