[R] How to stop Kaplan-Meier curve at a time point

Terry Therneau therneau at mayo.edu
Thu Nov 21 17:52:45 CET 2013

Here is the simplest answer that I know.

    outcome6 <- ifelse(Survival_days > 2190, 0, Outcome)
    survfit(Surv(Survival_days, outcome6) ~ Gender)

This assumes that the variable Outcome is coded as 0/1.  If it were instead FALSE/TRUE 
then change the 0 to "FALSE" in the first line.
The logrank test adds a term to the computation at each death time, so changing all the 
deaths after time 2160 to "censored" effectively ignores any information after that point. 
  There is no need to modify the time variable.

David W's suggestion to add "subset = (Survival_days <= 2190) was incorrect, effectively 
removing all of the most successful outcomes from the study.  It will thus lead to an 
underestimate of tooth survival.  (This was a surprise - David usually bats 1000 on 
survival questions, and I greatly appreciate his input to this list.)

Terry Therneau
(author of the package)

On 11/21/2013 05:00 AM, r-help-request at r-project.org wrote:
> Hello R users
> I have a question with Kaplan-Meier Curve with respect to my research. We
> have done a retrospective study on fillings in the tooth and their survival
> in relation to the many influencing factors. We had a long follow-up time
> (upto 8yrs for some variables). However, we decided to stop the analysis at
> the 6year follow up time, so that we can have uniform follow-up time for
> all the variables.
> I did play a bit with the formula and tried to stop the Kaplan-Meier curve
> at my desired time (2190days)or roughly 6 years. However, my question is I
> want to find the significance (log rank test) at this time point between
> the two curves; because I am not able to find a way to stop the survfit at
> this time point with my knowledge. Below is the code I used.
> Gender2<-survfit(Surv(Survival_days, Outcome)~Gender)
> plot (Gender2, xmax=2190, mark.time=FALSE, col=c(1:2), xlab="Survival time
> (Days)", ylab="Survival probability", main="Gender") # mark.time=FALSE will
> remove the censoring lines in the graph. If censoring lines are needed,
> then remove the mark.time section in the formula.
> legend("topright",c("Females", "Males"), col=(1:2), lwd=0.5)
> Am sure, the code in the first line has to be modified. Please help me with
> this and I will be very thankful to you.
> Thanks in advance

More information about the R-help mailing list