我有一系列抗生素数据(长格式)。对于每位患者,我希望将特定抗生素组合成“组合”疗法,基于 1) 感兴趣的特定抗生素列表,2) 仅当这些特定抗生素具有相同的开始日期时。感兴趣的具体疗法是:
- 氨苄青霉素和头孢曲松
- 氨苄青霉素和庆大霉素
- 氨苄西林和链霉素
我不需要任何其他组合(例如,如果氨苄西林和达托霉素在同一天开始,我不希望将其组合)。
我有一个患者 ID,可以根据它对抗生素发作进行分组。我的 start_date 变量已被强制转换为日期类 (YYYY-MM-DD)。所有其他变量都是字符。
这是一组示例数据。在我的实际数据框中,有超过 1,000 行。
ID <- c("C1", "C1", "C1", "C2", "C3", "C3", "C3", "C4", "C4", "C5", "C5", "C5", "C6", "C6")
abx <- c("ampicillin", "ceftriaxone", "vancomycin", "linezolid", "ampicillin", "gentamicin", "vancomycin", "piptazo", "daptomycin", "ampicillin", "streptomycin", "vancomycin", "ampicillin", "daptomycin")
date <- c(as.Date("2020-02-01"), as.Date("2020-02-01"), as.Date("2020-01-28"), as.Date("2020-03-01"), as.Date("2020-02-17"), as.Date("2020-02-17"), as.Date("2020-03-01"), as.Date("2020-01-11"), as.Date("2020-01-05"), as.Date("2020-01-05"), as.Date("2020-01-05"), as.Date("2020-01-01"), as.Date("2020-01-14"), as.Date("2020-01-14"))
df_abx <- data.frame(ID, abx, date)
这是我希望的解决方案:
ID |
abx |
start_date |
C1 |
ampicillin, ceftriaxone |
2020-02-01 |
C1 |
vancomycin |
2020-01-28 |
C2 |
linezolid |
2020-03-01 |
C3 |
ampicillin, gentamicin |
2020-02-17 |
C3 |
vancomycin |
2020-03-01 |
C4 |
piptazo |
2020-01-11 |
C4 |
daptomycin |
2020-01-05 |
C5 |
ampicillin, streptomycin |
2020-01-05 |
C5 |
vancomycin |
2020-01-01 |
C6 |
ampicillin |
2020-01-14 |
C6 |
daptomycin |
2020-01-14 |
我怀疑该解决方案包括患者 ID 的“group_by”,并且我一直在尝试summary 和 case_when,但我还没有到达我想要的位置。