我有一个数据集,其中每一行都由一个住院ID标识.每一行包含关于住院ID、发生住院的医院ID以及给定住院的入院日期和出院日期的信息.
我想知道,对于每一次住院,在特定住院开始前30天内在发生住院的特定医院内结束的所有其他住院的ID.
以下是在两家医院进行的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)
我正在try 编写一个代码,该代码添加一个列,其中包含在这30天间隔范围内发生的所有住院治疗.我想要的输出如下:
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医院:
- 在住院前的30天内没有住院1
- 住院1发生在住院2之前的30天内
- 住院1和住院2发生在住院前30天内3
在B医院:
- 住院前30天内没有住院4
- 住院4发生在住院前30天内5
- 住院4发生在住院前30天内6