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

在R语言中为临床数据框添加给药剂量变更行的技术问询

解决方案:用dplyr添加临床数据的剂量变更并保持格式

步骤1:加载依赖包

先加载dplyr和tibble来简化数据处理:

library(dplyr)
library(tibble)

步骤2:确认原始数据

你的原始数据结构如下:

df <- data.frame(ID = c(1,1,1,2,2,3,3,3),
                 DOSE = c(100, NA, NA, 200, NA, 300, NA, NA),
                 TIME = c(NA, 1, 2, NA, 3, NA, 1, 2),
                 Drug_concentration = c(NA, 5, 6.5, 3, 4, 8, 10, 12))

步骤3:整理剂量变更信息

把需要调整的剂量信息整理成小数据框,明确患者ID、变更后的剂量,以及变更发生的时间点:

dose_changes <- tibble(
  ID = c(1, 3),          # 需调整剂量的患者ID
  target_time = c(2, 2), # 剂量变更发生的时间点
  new_dose = c(50, 500)  # 变更后的剂量值
)

步骤4:给原始数据添加排序标记

为了准确定位插入位置,给每个患者的行分配组内排序编号:

df_with_sort <- df %>%
  group_by(ID) %>%
  mutate(sort_key = row_number()) # 每个ID内的行按原始顺序编号
  ungroup()

步骤5:生成待插入的剂量变更行

把变更信息转换成和原始数据格式一致的行,并设置插入位置的排序键(确保插在目标时间行的前面):

insert_rows <- dose_changes %>%
  # 关联到目标时间行的排序键
  left_join(
    df_with_sort %>% filter(!is.na(TIME)),
    by = c("ID", "target_time" = "TIME")
  ) %>%
  # 生成符合原始格式的行:DOSE为新剂量,TIME和浓度设为NA
  mutate(
    DOSE = new_dose,
    TIME = NA,
    Drug_concentration = NA,
    sort_key = sort_key - 0.5 # 让插入行排在目标时间行之前
  ) %>%
  # 匹配原始数据的列顺序
  select(ID, DOSE, TIME, Drug_concentration, sort_key)

步骤6:合并并排序得到最终数据

把原始数据和插入行合并,按ID和排序键排序后移除临时排序标记:

final_df <- bind_rows(df_with_sort, insert_rows) %>%
  arrange(ID, sort_key) %>%
  select(-sort_key) # 删除临时排序键

# 查看最终结果
print(final_df)

运行后得到的结果完全符合你的格式要求:

ID DOSE TIME Drug_concentration
1  1  100   NA                 NA
2  1   NA    1                  5
3  1   50   NA                 NA
4  1   NA    2                6.5
5  2  200   NA                 NA
6  2   NA    3                  4
7  3  300   NA                 NA
8  3   NA    1                 10
9  3  500   NA                 NA
10 3   NA    2                 12

方法说明

  • 通过排序键定位插入位置,能高效处理多个患者的批量剂量变更
  • 严格保留原始数据格式:剂量行仅存DOSE值,时间点行仅存TIME和浓度数据
  • 后续新增变更只需修改dose_changes数据框即可,扩展性强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 13:47:00