Kaplan Meier迭代地说

时间:2013-04-18 10:59:10

标签: r

我有一个如下所示的数据框(DF):

  Col1        Class1   Class2    Class3   t_rfs(days)  e_rfs
Sample_name1      A        B         A        750            1
Sample_name2      B        B         A        458            0
Sample_name3      B        B         A        1820           0
Sample_name4      B        A         B        1023           0
Sample_name5      A        A         B        803            0
Sample_name6      A        B         A        1857           1
Sample_name7      A        A         B        850            1

t_rfs_years =复发自由生存的时间
e_rfs =无复发生存的事件 NB:这个表是一个关于实例的例子。

我只想将Kaplan Meier应用于每个班级。 我写的代码如下:

library(survival)
DF <- read.delim("DF.txt", header = T)
pdf("All_KM_plotted_together.pdf", paper = "USr")
par(mfrow=c(2,2))
surd <- survdiff(Surv(DF$t_rfs, DF$e_rfs == 1) ~ DF$Class1) 
plot(survfit(Surv(DF$t_rfs, DF$e_rfs == 1) ~ DF$Class1), col = c("red", "blue"))
surd <- survdiff(Surv(DF$t_rfs, DF$e_rfs == 1) ~ DF$Class2) 
plot(survfit(Surv(DF$t_rfs, DF$e_rfs == 1) ~ DF$Class2), col = c("red", "blue"))
surd <- survdiff(Surv(DF$t_rfs, DF$e_rfs == 1) ~ DF$Class3) 
plot(survfit(Surv(DF$t_rfs, DF$e_rfs == 1) ~ DF$Class3), col = c("red", "blue"))
dev.off()

我只想编写一个循环,一次迭代地获取每个“类”并运行脚本而不是每次为每个“类”重复编写代码。 有人可以帮我吗?

最佳

F。

1 个答案:

答案 0 :(得分:2)

有两种方法可以从数据框中提取列:$[[。以下几个例子将为您提供同样的东西:

  • DF$Class1
  • DF[["Class1"]]
  • DF[[1]]

因此,使用上面的最后一个方法结合for循环可以实现您想要的效果。

for(i in 1:3){
    plot(survfit(Surv(DF$t_rfs, DF$e_rfs == 1) ~ DF[[i]]), col = c("red", "blue"))
}

这是非常基本的,所以我建议你阅读一本介绍性的R书来帮助你。它会让你免于挫折,并且比在SO上询问更快。