2013-04-18 36 views
0

我有看起来像这样的数据帧(DF):的Kaplan Meier迭代

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.

回答

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上提出要求更快。

+0

Ok Backlin!感谢您的帮助和建议! – Fuv8

+0

不客气! – Backlin