[R] survSplit with data.frame containing a Surv object

2009-07-13 Thread Heinz Tuechler

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?

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.


Re: [R] survSplit with data.frame containing a Surv object

2009-07-13 Thread Charles C. Berry

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

__
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.


Re: [R] survSplit with data.frame containing a Surv object

2009-07-13 Thread Heinz Tuechler

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.


Thanks again,
Heinz

__
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.


Re: [R] survSplit with data.frame containing a Surv object

2009-07-13 Thread Charles C. Berry

On Mon, 13 Jul 2009, Heinz Tuechler wrote:


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.





Heinz,

Try

newdata - lapply(data, function(x) {
if (!is.matrix(x)) {
rep(x,ntimes +1 )
} else {
x - as.matrix(x)
x[rep(1:nrow(x), ntimes + 1),]}})


HTH,

Chuck


Thanks again,
Heinz

__
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

__
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.


Re: [R] survSplit with data.frame containing a Surv object

2009-07-13 Thread Charles C. Berry

On Mon, 13 Jul 2009, Charles C. Berry wrote:


On Mon, 13 Jul 2009, Heinz Tuechler wrote:


 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.




Heinz,

Try

newdata - lapply(data, function(x) {
if (!is.matrix(x)) {
rep(x,ntimes +1 )
 } else {


Oops. The next line is unneeded:


 x - as.matrix(x)



Chuck



 x[rep(1:nrow(x), ntimes + 1),]}})


HTH,

Chuck


 Thanks again,
 Heinz

 __
 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

__
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

__
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.