我有一个如下所示的数据框(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。
答案 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上询问更快。