如何知道某个事件是发生在其他事件之后还是期间

How to know if an event occurred after or during other events

提问人:Nashe 提问时间:10/27/2023 最后编辑:Nashe 更新时间:10/27/2023 访问量:43

问:

我试图了解疗养院中目前正在服用一系列药物的患者是否在某种药物、某种感兴趣的药物和死亡之间有任何其他药物。感兴趣的药物是布洛芬

id <- c('1', '1', '1','1','2','2','2')
drug <- c('ibuprofen','aleve','tylenol','claritin', 'ibuprofen','aleve','tums')
start <- c('100','105','50','115','20','-9','30')
death <- c('120','120','120','120','50','50','50')

我期待看到的结果表显示了布洛芬之后和死亡前服用的药物

id <- c('1','1','2')
drug <- c('aleve','claritin','tums')
start <- c('105','115','30)

到目前为止,这是我拥有的代码,我只是过滤掉了向患者展示想要的药物。但我被困在如何前进上。

y <- df %>%
  filter(drug == "ibuprofen")
r dplyr datediff

评论

1赞 neilfws 10/27/2023
我们无法将数据从图像中读取到 R 中。请通过以纯文本格式包含具有代表性的小型数据集来使此问题可重现 - 例如,如果不是太大,则为 的输出。dput(yourdataframe)

答:

0赞 Mark 10/27/2023 #1

一句话!

dplyr::filter(df, start > start[which(drug == 'ibuprofen')], .by = id)

解释:

which()获取某项为真的索引,在本例中为药物为布洛芬的行。

然后,我们可以使用它来查找布洛芬行的起始值,然后检查每一行,如果起始值在布洛芬起始之后。