我计划识别和提取那些经历过药物从旧药物到新药的药物转变的受试者。代码中有两种药物:A和B,A型是老药,B型是新药,B类有不同的药品品牌: 2,3和4.。
随着时间的推移,每一个人,有三种模式的药物变化:
df <- data.frame(id =c(11,11,11,12,12,12,13,13,13,13,13,13,13,13),drug_type = c("A","A","B","A","A","B"),drug_brand =c(1,1,2,2,3,3,3,1,1,2,3),date = c("2020-01-01“),"2020-02-01“、"2020-03-01”、"2020-03-13“、"2019-04-05”、"2019-05-02“、"2019-06-03”、"2019-08-04“、"2021-02-02”、"2021-02-27“、"2021-03-22",(“2021-04-11”) df$date <- as.Date(df$date)
那么,我应该如何从这个数据集中过滤那些改变药物的患者呢?
为了解决这一问题,我在两个数据帧中总结了A型药物的最后使用日期和B型药物的首次使用日期。我用id和过滤器将它们连接起来,条件是B型的第一个日期比A型的最后一个日期晚,但这只能解决从A型到B型的变化,我不知道如何识别药物变化的所有模式。
我没有找到任何解决办法或类似的问题,所以我真诚地希望你能与我分享你的想法。谢谢您抽时间见我。
发布于 2022-04-02 13:25:49
也许您可以看看drug_type
从"A“到"B”的转换,或者包括不同的drug_brand
数大于1的情况?
library(tidyverse)
df %>%
group_by(id) %>%
filter(any(drug_type == "B" & lag(drug_type) == "A") |
n_distinct(drug_brand) > 1)
发布于 2022-04-02 12:43:40
您的最终目标是过滤掉任何更改drug_brand
或drug_type
的主题吗?如果是这样的话,您可以使用带有dplyr::n_distinct()
的分组筛选器删除>1品牌或>1类型的主题:
library(dplyr)
df %>%
group_by(id) %>%
filter(
n_distinct(drug_type) == 1,
n_distinct(drug_brand) == 1
) %>%
ungroup()
https://stackoverflow.com/questions/71717528
复制相似问题