R语言如何批量生成多列计算诊断前不同组别口服药物的ddd剂量
R实现诊断前口服药物分组合计剂量的方案
原有代码的问题
- 未将
drug_group取值与新增的ddd_<组别>列做对应匹配,所有新增列都直接赋值全量ddd值 - 筛选条件逻辑错误:误将
drug_type字段作为drug_group判断,且未处理ddd为NA的场景 - 对向量做条件判断时用了
if而不是向量化的ifelse/case_when,会触发逻辑判断长度不匹配的警告
正确实现代码
基于tidyverse的方案,可自动适配任意数量的drug_group分组,无需手动配置每个分组:
library(tidyverse) # 自动读取所有drug_group取值,无需手动枚举 drug_groups <- unique(df1$drug_group) df2 <- df1 %>% mutate( # 遍历所有分组生成对应ddd_列 across(all_of(drug_groups), ~ case_when( # 同时满足四个条件时取ddd值,否则返回0 drug_type == "oral" & prescribed_date < dia_date & drug_group == cur_column() & !is.na(ddd) ~ ddd, TRUE ~ 0 ), # 自动生成ddd_小写组别的列名 .names = "ddd_{tolower(.col)}" ) )
运行上述代码得到的df2与你给出的示例输出完全一致。
内容的提问来源于stack exchange,提问作者moonlu
相关产品推荐
相关产品推荐

