有没有办法根据 R 中的 ID 分组的多列条件折叠行?

2023-12-30

我有一系列抗生素数据(长格式)。对于每位患者,我希望将特定抗生素组合成“组合”疗法,基于 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,但我还没有到达我想要的位置。


**更新:正确的版本**我们可以这样做:

library(dplyr)
library(tidyr)

df_abx %>% 
  group_by(ID, date) %>% 
  mutate(abx = toString(abx)) %>% 
  anti_join(df1, by="abx") %>% 
  separate_rows(abx) %>% 
  distinct() %>% 
  bind_rows(df_abx %>%  
              group_by(ID, date) %>%
              mutate(x = ifelse(str_detect(abx, pattern), 1, 0)) %>% 
              filter(sum(x)>=2) %>% 
              summarise(abx= toString(abx))) %>% 
  arrange(ID, abx)
 ID    abx                      date      
   <chr> <chr>                    <date>    
 1 C1    ampicillin, ceftriaxone  2020-02-01
 2 C1    vancomycin               2020-01-28
 3 C2    linezolid                2020-03-01
 4 C3    ampicillin, gentamicin   2020-02-17
 5 C3    vancomycin               2020-03-01
 6 C4    daptomycin               2020-01-05
 7 C4    piptazo                  2020-01-11
 8 C5    ampicillin, streptomycin 2020-01-05
 9 C5    vancomycin               2020-01-01
10 C6    ampicillin               2020-01-14
11 C6    daptomycin               2020-01-14
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法根据 R 中的 ID 分组的多列条件折叠行? 的相关文章

  • 使用 data.table 对分组数据进行插值

    这是我最初发布的问题的延续http r 789695 n4 nabble com subset Between data table list and single data table object tp4673202 html http
  • 有没有一种简单的方法可以在 R 的 igraph 中按度数对网络节点进行着色?

    使用igraphR 包 我想按度数对网络节点进行着色 颜色应代表渐变 例如从蓝色到红色 或从黄色到红色 从网络中观察到的最低程度到最高程度 我找到了一个可行的解决方案 https stackoverflow com questions 40
  • R 中的卡方拟合优度检验

    我有一个观察值向量 还有一个用模型计算的值向量 actual lt c 1411 439 214 100 62 38 29 64 expected lt c 1425 3 399 5 201 6 116 9 72 2 46 3 30 4 6
  • 安装 R 包。包含目录为空。开发标头

    我目前正在尝试运行一些最初在 2 11 0 下运行的 R 代码 我使用的 R 版本 2 14 1 无法运行该代码 我不熟悉 R 及其向后兼容性 据我所知 我的问题可能与版本无关 我会很高兴得知这是我做错的事情 其余的代码是无关紧要的 即使我
  • 如何扩展 ggplot y 轴限制以包含最大值

    通常 在图中 Y 轴值标签会在绘制的最大值下方被截断 For example library tidyverse mtcars gt ggplot aes x mpg y hp geom point 我知道scale y continous
  • 计算横截面积作为高度的函数

    我试图弄清楚如何计算不同水位的河流横截面的充满水的面积 对于横截面 我有 5 m 宽河流上每 25 cm 的深度 并且可以根据之前很好回答的问题来计算面积计算不同高度的横截面积 https stackoverflow com questio
  • 写入抓取数据的 csv 文件时如何拆分项目名称

    我有兴趣使用 R 从网上抓取的数据创建 csv 或类似的 Excel 兼容文件 到目前为止 我通过执行以下操作来存储数据 require textreadr spiegel lt read html http www spiegel de
  • 获取数据集 R 包中所有对象名称的列表?

    如何获取对象中对象的确切名称列表datasets https stat ethz ch R manual R devel library datasets html 00Index html包裹 我在这里找到了很多 data package
  • 使用多边形图层下方的轮廓线切割多边形

    我想根据高程将多边形图层切割成两部分 上部和下部 多边形可能是凸的或凹的 并且切割的位置可能彼此不同 等高线的间隔为 5m 这意味着我可能需要生成一个具有更紧凑的等高线的等高线 例如 1m 的间隔 关于如何做到这一点的任何想法 在 ArcG
  • 在 Shiny 应用程序中更改 bsModal 的背景

    我正在开发一个 Shiny 应用程序 我需要确保最终用户不会意外关闭 bsModal 因为它上面有一些操作按钮 我做了一些研究并了解到我需要覆盖背景和键盘参数 但即使我看到了一些建议 我也不知道这到底需要放在我的代码中的哪里 我不精通 Ja
  • 闪亮的传单添加大量分离的折线

    我有一个 200k 行数据集 其中包含出发地和目的地的坐标 我有一个 R 闪亮的应用程序 带有传单地图 可以在这些坐标上显示圆圈 尽管坐标数量很大 但效果很好 这是数据的简化示例 每行包含出行id 出发地经纬度 目的地经纬度 id lat
  • 如何在 Shiny 应用程序中访问/打印/跟踪当前选项卡选择?

    我正在一个闪亮的应用程序中工作 我希望能够访问用户在会话中当前所在选项卡上的信息 我有一个观察事件 用于侦听要单击的特定按钮 简而言之 我想存储 打印用户单击此按钮时所在的当前选项卡 单击此按钮后 选项卡将更改为带有 updateTabIt
  • R 监督潜在狄利克雷分配包

    我在用着这个LDA包 https cran r project org web packages lda 对于 R 具体来说 我正在尝试做监督潜在狄利克雷分配 slda https www cs princeton edu blei pap
  • 将多个函数应用于一个向量

    我正在寻找一种将多个函数应用于一个向量的选项 我认为这对于逆应用函数来说是一种仁慈 其中一个函数应用于许多向量 或列 有没有办法指定两个或多个函数 例如 min 和 max 并将其应用于向量 与 CathG的评论类似 但没有get v lt
  • 挑战:优化取消列出[简单]

    因为 SO 最近有点慢 所以我发布了一个简单的问题 如果大鱼们能在这场比赛中留在替补席上并给新秀们一个回应的机会 我将不胜感激 有时我们的对象具有大量的大列表元素 向量 您如何将这个对象 取消列出 到单个向量中 证明你的方法比unlist
  • R闪亮:基于checkboxgroupinput的子集数据

    我想根据复选框输入动态选择的列对数据进行子集 有什么方法可以使我的输入文件在我的代码中全局可用 以便可以方便地进行进一步的操作 以下是我的代码 Server R library shiny shinyServer function inpu
  • 使用 xtable 对乳胶输出的表进行排序

    我正在尝试生成一个排序表并导出到乳胶中 然而 xtable 似乎无法处理排序表 建议 a lt sample letters 500 replace T b lt table a c lt sort table a decreasing T
  • Dplyr 过滤多个类似条件

    我正在尝试在 dplyr 中做一个过滤器 其中的列就像某些观察结果 我可以使用 sqldf 作为 Test lt sqldf select from database Where SOURCE LIKE ALPHA OR SOURCE LI
  • 有没有一种明智的方法可以在 R 中执行诸如文档字符串之类的操作?

    这不仅仅是一个编码风格问题 如果您了解 python 我认为 Ruby 也有类似的东西 您可以在函数中拥有文档字符串 这样您就可以通过发出 help 命令轻松获取该字符串 例如 def something t None Do somethi
  • ggplot2以限制为中心的多边形世界地图给出了有趣的边缘

    使用下面的代码我生成了一张以华盛顿特区为中心的地图 解决方案基于科斯克的解决方案在这里 https stackoverflow com questions 10620862 use different center than the pri

随机推荐