使用R语言dplyr包:查找每行对应特定时间范围的住院记录
需求说明
我有一个数据集,每行以**住院ID(hospitalization_id)**标识,包含以下字段:
- 住院ID(hospitalization_id)
- 就诊医院ID(hospital_id)
- 入院日期(date_start)
- 出院日期(date_end)
需要针对每一条住院记录,找出同一医院中,在该住院记录入院前30天内已结束的所有其他住院记录的ID。
示例数据集
以下是包含2家医院共6条住院记录的示例:
library("tidyverse") df <- data.frame(hospitalization_id = c(1, 2, 3, 4, 5, 6), hospital_id = c("A", "A", "A", "B", "B", "B"), date_start = as.Date(c("2000-01-01", "2000-01-12", "2000-01-20", "2000-02-10", "2000-02-12", "2000-02-12")), date_end = as.Date(c("2000-01-03", "2000-01-18", "2000-01-22", "2000-02-11", "2000-02-14", "2000-01-17")))
已完成的预处理步骤
我已经生成了每条住院记录入院前30天的时间区间:
df_with_date_range <- df %>% mutate(date_range1 = date_start - 31, date_range2 = date_start - 1)
期望输出目标
需要编写代码添加一列hospitalization_id_in_range,记录该时间区间内符合条件的所有住院记录ID,期望输出如下:
df_final <- df_with_date_range %>% filter(hospitalization_id == 3) %>% bind_rows(df_with_date_range) %>% arrange(hospitalization_id) %>% mutate(hospitalization_id_in_range = c(NA, 1, 1, 2, NA, 4, 4))
匹配规则说明
医院A的匹配情况
- 住院记录1入院前30天内无其他住院记录
- 住院记录1在住院记录2入院前30天内
- 住院记录1和2在住院记录3入院前30天内
医院B的匹配情况
- 住院记录4入院前30天内无其他住院记录
- 住院记录4在住院记录5入院前30天内
- 住院记录4在住院记录6入院前30天内
内容的提问来源于stack exchange,提问作者PaulaSpinola
相关产品推荐
相关产品推荐

