我正在努力了解疗养院里目前正在服用一系列药物的患者是否有过介于某种药物和死亡之间的其他药物.

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")

推荐答案

-俏皮话!

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

解释:

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

然后我们可以使用它来找到布洛芬行的起始值,然后判断每一行的起始值是否在布洛芬开始之后.

R相关问答推荐

计算转换的次数

Facet_wrap具有不同bin宽度值的图表

使用gsim删除特殊词

如何从当前行上方找到符合特定条件的最接近值?

ggplot的轴标签保存在officer中时被剪切

为什么在ggplot2中添加geom_text这么慢?

筛选出以特定顺序患病的个体

将包含卷的底部25%的组拆分为2行

在R中使用download. file().奇怪的URL?

如何编辑gMarginal背景以匹配绘图背景?

根据列A中的差异变异列,其中行由列B中的相对值标识

R -在先前group_by级别汇总时获取最大大小子组的计数

列名具有特殊字符时的循环回归

如何删除设置大小的曲线图并添加条形图顶部数字的百分比

如何计算每12行的平均数?

将列表中的字符串粘贴到R中for循环内的dplyr筛选器中

如何阻止围堵地理密度图?

计算使一组输入值最小化的a、b和c的值

在ggplot2图表中通过端点连接点

每行不同列上的行求和