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

使用pivot_wider后值不唯一,如何实现单日期多药物分列展示?

提取每个ID首次/末次日期的药物并单独列示

核心思路

先筛选每个ID的首次(最小日期)和末次(最大日期)记录,再为同一日期下的药物添加唯一序号,最后通过宽格式转换实现每个药物单独成列,避免逗号合并的问题。

完整代码

library(dplyr)
library(tidyr)

# 1. 筛选每个ID的首次、末次日期的所有药物记录
df_filtered <- df %>%
  group_by(ID) %>%
  filter(Testdate %in% c(min(Testdate), max(Testdate))) %>%
  ungroup()

# 2. 为同一ID-日期组合下的药物添加序号,区分同日期的不同药物
df_with_seq <- df_filtered %>%
  group_by(ID, Testdate) %>%
  mutate(med_seq = row_number()) %>%
  ungroup()

# 3. 转换为宽格式,每个药物单独成列
df_wide <- df_with_seq %>%
  pivot_wider(
    id_cols = ID,
    names_from = c(Testdate, med_seq),
    values_from = c(Medication, MedicationATB),
    names_sep = "_"
  )

结果说明

转换后的宽格式数据中,每个药物会以类似Medication_2022-01-01_1、MedicationATB_2022-01-01_2的列名存在:

  • 前缀Medication/MedicationATB对应原数据的字段
  • 中间部分是记录日期
  • 末尾数字是该日期下的药物序号

这种结构可直接用于后续的统计分析,无需拆分逗号分隔值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 14:47:39