R语言按疾病分组计算生存率的代码实现求助
R语言按疾病分组计算生存率实现方案
前置说明
假设你的原始数据集命名为patient_df,字段结构与描述完全一致:
- PersonId:患者唯一标识
- Disease:疾病类型
- Survival:存活标识,1表示存活,0表示死亡
测试样例数据(可选)
如果需要先测试代码效果,可运行以下代码生成符合要求的10条模拟数据:
patient_df <- data.frame( PersonId = 1:10, Disease = sample(c("肺癌", "胃癌", "肝癌"), 10, replace = TRUE), Survival = sample(c(0,1), 10, replace = TRUE, prob = c(0.3, 0.7)) )
方法1:使用dplyr实现(推荐,语法简洁易读)
需要先安装并加载tidyverse套件:
# 未安装时先执行安装 # install.packages("tidyverse") library(dplyr) # 分组计算生存率 survival_result <- patient_df %>% group_by(Disease) %>% summarise( 疾病总人数 = n(), 存活人数 = sum(Survival == 1), 生存率 = round(存活人数 / 疾病总人数, 4) # 可自行调整保留的小数位数 ) # 打印查看结果 print(survival_result)
方法2:Base R实现(无需安装第三方包)
适合不想额外安装依赖包的场景:
survival_result <- aggregate( Survival ~ Disease, data = patient_df, FUN = function(x) { total <- length(x) alive <- sum(x == 1) rate <- round(alive / total, 4) return(c(疾病总人数 = total, 存活人数 = alive, 生存率 = rate)) } ) # 转换为标准数据框格式 survival_result <- do.call(data.frame, survival_result) # 打印查看结果 print(survival_result)
两种方法输出的结果均包含你需要的四个字段:疾病类型、疾病总人数、存活人数、生存率,可直接导出或进行后续分析。
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

