【发布时间】:2020-02-28 15:29:34
【问题描述】:
以下是我所拥有数据的简要说明:来自 4 项独立研究的生存数据,这些研究比较了 20 组之间的生存率。每项研究都持续了不同的时间。例如,研究 1 持续了 42 天,研究 2 持续了 50 天。
这是数据的快照:
UniqueID Time Censored Group1 Group2 Study
ABC123 6 1 1 111 1
DEF456 42 0 1 112 1
GHI789 42 0 2 344 1
JKL012 38 1 2 564 1
MNO345 19 1 10 761 1
PQR678 13 1 5 222 2
STU901 5 1 20 333 2
VWX234 50 0 15 444 2
YZA567 20 1 15 555 2
BCD890 50 0 12 555 2
这就是我想做的事情:我想创建一个函数,允许用户选择两个参数(Study、Group1)来比较存活率。
这是我到目前为止所尝试的:
SurvA=function(a,b){
setwd("path to my file")
data=read.xlsx("mydata.xlsx",sheet=1)
data_study$Study==a
list(unique(data_study$Group1))
}
我想编写一个循环来扫描列表中所有唯一的 Group1 数字,并使用以下逻辑创建 Group1 特定变量作为示例:
data_study$Group1_10=ifelse(data_study$Group1==10,1,0)
data_study$Group1_12=ifelse(data_study$Group1==12,1,0)
我不确定如何继续执行会导致这种情况发生的循环。
完成后,其余代码将如下所示:
library(survival)
library(survminer)
SurvA=function(a,b){
setwd("path to my file")
data=read.xlsx("mydata.xlsx",sheet=1)
data_study$Study==a
list(unique(data_study$Group1))
#LOOP
surv_object=Surv(time=data_study$Time,event=data_study$Censored)
fit=survfit(surv_object~b,data=data_study)
ggsurv=ggsurvplot(fit,data=data_study,pval=TRUE,xlim=c(0,60),
title='Study 'a' Survival Plot for Group 'b' ',xlab="Time (days)")
ggsurv$plot=ggsurv$plot+theme(plot.title=element_text(hjust=0.5))
print(ggsurv)
}
任何帮助将不胜感激!此外,如果您对更有效的方法来编写我已经掌握的内容有建议 - 我会很高兴了解更好的方法来做到这一点。
【问题讨论】:
标签: r function loops ggplot2 survival