如何用group_by结合条件语句处理患者生死状态DataFrame
患者死亡状态汇总解决方案
可以使用dplyr包的分组与条件判断功能实现需求,具体步骤如下:
1. 加载依赖包
先确保安装并加载dplyr:
install.packages("dplyr") # 首次使用需执行安装 library(dplyr)
2. 分组汇总数据
通过group_by按患者ID分组,结合case_when条件语句生成最终的死亡状态与死亡日期:
df_summary <- df %>% group_by(ID) %>% summarize( # 按优先级判断死亡状态:入组死亡优先,其次随访死亡,否则存活 death = case_when( any(death_inclusion == "Yes") ~ "Yes", any(death_followup == "Yes") ~ "Yes", TRUE ~ "No" ), # 匹配对应死亡日期 date_death = case_when( any(death_inclusion == "Yes") ~ first(date_death_inc[death_inclusion == "Yes"]), any(death_followup == "Yes") ~ first(date_death_followup[death_followup == "Yes"]), TRUE ~ as.Date(NA) ) )
3. 查看结果
运行代码后,df_summary即为目标汇总数据:
print(df_summary)
输出结果:
# A tibble: 4 × 3 ID death date_death <chr> <chr> <date> 1 1 Yes 2004-08-15 2 2 Yes 2011-10-16 3 3 No NA 4 4 Yes 2013-05-03
代码说明
group_by(ID):将数据按患者ID分组,保证每个患者仅生成一条汇总记录。case_when:按逻辑优先级判断状态:- 若入组时已死亡,直接标记为死亡并取入组死亡日期;
- 若入组未死亡但随访中出现死亡,标记为死亡并取随访死亡日期;
- 无死亡记录则标记为存活,死亡日期设为
NA。
first():确保在多条随访记录中仅取首次出现的死亡日期(死亡事件只会发生一次)。
内容的提问来源于stack exchange,提问作者lM__3
相关产品推荐
相关产品推荐

