> On Oct 7, 2017, at 9:01 AM, Ted Beginner (RStudio) via R-help > <r-help@r-project.org> wrote: > > > For adjusted survival curves I took the sample code from here: > https://rpubs.com/daspringate/survival > and adapted for my date, but ... have a QUESTION. > > library(survival) > library(survminer) > df<-read.csv("base.csv", header = TRUE, sep = ";") > head(df) > ID start stop censor sex age stage treatment > 1 1 0 66 0 2 1 3 1 > 2 2 0 18 0 1 2 4 2 > 3 3 0 43 1 2 3 3 1 > 4 4 0 47 1 2 3 NA 2 > 5 5 0 26 0 1 4 3 NA > > # THANKS, DAVID WINSEMIUS for remark!!! ("R regression functions allow you to > use column names.") > model <- coxph( Surv(time = start, > time2 = stop, > event = censor) ~ treatment + age + sex + stage, data = df) > > plot(survfit(model), > las=1, > xscale = 1.00, > xlab = "Months after diagnosis", > ylab = "Proportion survived", > main = "Baseline Hazard Curve") > > #HOW TO EXPLAIN TO R, THAT treatment, age, sex and stage ARE FACTORS, AND NOT > CONTINUOUS VAR? > treat <- with (df, > data.frame ( > treatment = levels(treatment), > age = rep(levels(age)[1], 2), > sex = rep(levels(sex)[1], 2), > stage = rep(levels(stage)[1], 2)))
Perhaps: treat2 <- treat treat2[,c('treatment', 'age', 'sex', 'stage')] <- lapply( treat2[,c('treatment', 'age', 'sex', 'stage')], factor) > treat2 ID start stop censor sex age stage treatment 1 1 0 66 0 2 1 3 1 2 2 0 18 0 1 2 4 2 3 3 0 43 1 2 3 3 1 4 4 0 47 1 2 3 <NA> 2 5 5 0 26 0 1 4 3 <NA> > str(treat2) 'data.frame': 5 obs. of 8 variables: $ ID : int 1 2 3 4 5 $ start : int 0 0 0 0 0 $ stop : int 66 18 43 47 26 $ censor : int 0 0 1 1 0 $ sex : Factor w/ 2 levels "1","2": 2 1 2 2 1 $ age : Factor w/ 4 levels "1","2","3","4": 1 2 3 3 4 $ stage : Factor w/ 2 levels "3","4": 1 2 1 NA 1 I saw Peter Dalgaard's reply and I'm guessing that your 'age' was grouped into some categorical variable, perhaps decades? > > str(treat) > [[alternative HTML version deleted]] You should learn to post in plain text and use dput to present your data structures. At your console do this dput(treat) # and this will appear. Copy it to your plain-text message: structure(list(ID = 1:5, start = c(0L, 0L, 0L, 0L, 0L), stop = c(66L, 18L, 43L, 47L, 26L), censor = c(0L, 0L, 1L, 1L, 0L), sex = c(2L, 1L, 2L, 2L, 1L), age = c(1L, 2L, 3L, 3L, 4L), stage = c(3L, 4L, 3L, NA, 3L), treatment = c(1L, 2L, 1L, 2L, NA)), .Names = c("ID", "start", "stop", "censor", "sex", "age", "stage", "treatment" ), class = "data.frame", row.names = c("1", "2", "3", "4", "5" )): Then we can just do this: treat <- structure(list(ID = 1:5, start = c(0L, 0L, 0L, 0L, 0L), stop = c(66L, 18L, 43L, 47L, 26L), censor = c(0L, 0L, 1L, 1L, 0L), sex = c(2L, 1L, 2L, 2L, 1L), age = c(1L, 2L, 3L, 3L, 4L), stage = c(3L, 4L, 3L, NA, 3L), treatment = c(1L, 2L, 1L, 2L, NA)), .Names = c("ID", "start", "stop", "censor", "sex", "age", "stage", "treatment" ), class = "data.frame", row.names = c("1", "2", "3", "4", "5" )) -- David Winsemius Alameda, CA, USA 'Any technology distinguishable from magic is insufficiently advanced.' -Gehm's Corollary to Clarke's Third Law ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.