You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于处方数据的药物转换模式分析:R脚本优化与工具推荐

药物转换模式分析的R脚本优化需求

问题背景

基于如下处方数据表(dput输出结果)研究药物转换模式:

structure(list(ID = c("A2M8K", "A2M8K", "A2M8K", "A2M8K", "A2M8K", 
"D2N4", "D2N4", "D2N4", "D2N4", "D2N4", "D13L", "D13L", "D13L", 
"D13L", "D13L", "D13L", "D13L", "D13L", "D13L", "D13L"), Class = c("Biguanides ", 
"Sulfonylureas", "Sulfonylureas", "Biguanides ", "Sulfonylureas", 
"DPP ", "Sulfonylureas", "GLP ", "GLP ", "Sulfonylureas", "Biguanides ", 
"Sulfonylureas", "Biguanides ", "Sulfonylureas", "DPP ", "Insulins", 
"Biguanides ", "Sulfonylureas", "Insulins", "Biguanides "), start_date = c("7/1/2018", 
"7/1/2018", "10/3/2018", "8/27/2020", "8/27/2020", "7/31/2019", 
"7/31/2019", "3/1/2020", "6/15/2020", "6/15/2020", "2/15/2016", 
"2/15/2016", "2/20/2017", "2/20/2017", "1/21/2018", "7/26/2018", 
"5/15/2019", "5/15/2019", "7/24/2019", "1/30/2020"), end_date = c("6/22/2020", 
"8/30/2018", "6/22/2020", "10/26/2020", "10/26/2020", "10/29/2019", 
"3/28/2020", "3/31/2020", "10/8/2020", "10/13/2020", "11/9/2016", 
"11/9/2016", "10/24/2018", "10/24/2018", "4/21/2018", "10/29/2018", 
"10/22/2019", "10/22/2019", "10/22/2019", "11/25/2020")), row.names = c(NA, 
20L), class = "data.frame")

现有尝试的R代码

###DF sample:
med_changes <- data.frame(ID = character(),
                          Change.type = character(),
                          Med.change = character(),
                          stringsAsFactors = FALSE)
#arrange:
library(dplyr)
prescriptions <- prescriptions %>%
  group_by(ID) %>%
  mutate(prev_med = lag(Class),
         prev_date = lag(end_date)) %>%
  ungroup() %>%
  filter(!is.na(prev_med))
### Switch: 
med_changes <- prescriptions %>%
  filter(as.numeric(difftime(start_date, prev_date, units = "days")) > 60) %>%
   mutate(Change.type = "Switch",
       Med.change = paste(prev_med, "to", Class),
       Time.to.change = as.numeric(difftime(start_date, prev_date, units = "days"))) %>%
  select(ID, Change.type, Med.change, Time.to.change)

### Add-On:
add_on <- prescriptions %>%
  filter(as.numeric(difftime(start_date, prev_date, units = "days")) > -60 & as.numeric(difftime(start_date, prev_date, units = "days")) <= 60) %>%
  mutate(Change.type = "Add-on",
         Med.change = paste(prev_med, "added to", Class),
         Time.to.change = as.numeric(difftime(start_date, prev_date, units = "days"))) %>%
  select(ID, Change.type, Med.change, Time.to.change)

med_changes <- rbind(med_changes, add_on)

存在的问题

现有脚本未考虑初始用药方案:若两种药物起始日期相同,代表患者初始接受联合用药治疗,后续用药需与所有既往用药类别对比,以判断是添加用药、转换用药还是无变更。

期望结果

需要得到包含初始联合用药记录、后续各类药物变更(添加/转换/无变更)的结构化结果,清晰展示每个患者的用药变更轨迹。

请求

是否可以修改现有脚本实现该需求,或能否推荐合适的R包?


内容的提问来源于stack exchange,提问作者Dudeii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 19:43:18