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

R语言宽表转换问题:并发症标记错误与多并发症记录缺失

修正医疗并发症数据集转宽表的R代码

首先定义贴合场景的模拟数据集:

# 模拟数据集
filtered_datum <- data.frame(
  record_id = c(1,1,2,3,3),
  surg_complication = c("SSI", "Hematoma", "SSI", "Hematoma", "SSI"),
  complication_laterality = c(1,2,3,1,3)
)

原问题根源

  1. 并发症标记错误:原代码未正确关联并发症类型与侧别,导致列名映射混乱
  2. 无法记录多种并发症:未做行拆分与聚合处理,导致同一患者的多并发症被覆盖

修正后的代码

library(tidyr)
library(dplyr)

# 第一步:处理双侧并发症,拆分数据行
processed_data <- filtered_datum %>%
  mutate(
    # 将侧别转为列表,双侧拆分为左右两个元素
    laterality_list = case_when(
      complication_laterality == 1 ~ list("right"),
      complication_laterality == 2 ~ list("left"),
      complication_laterality == 3 ~ list(c("right", "left"))
    )
  ) %>%
  # 展开列表,把双侧对应的单行拆为两行
  unnest(laterality_list) %>%
  # 拼接目标列名:并发症类型+侧别
  mutate(col_name = paste0(surg_complication, "_", laterality_list)) %>%
  # 标记该并发症存在
  mutate(value = 1)

# 第二步:转宽表,补全缺失并发症为0
Comp_summary_wide <- processed_data %>%
  pivot_wider(
    id_cols = record_id,
    names_from = col_name,
    values_from = value,
    values_fill = 0,
    # 处理同一患者同一并发症侧别重复的情况
    values_fn = max
  )

输出结果验证

运行后Comp_summary_wide的内容:

record_id SSI_right Hematoma_left SSI_left Hematoma_right
       <dbl>     <dbl>         <dbl>    <dbl>          <dbl>
1         1         1             1        0              0
2         2         1             0        1              0
3         3         1             0        1              1

完全满足需求:

  • 每个record_id仅出现一行
  • 并发症与侧别对应准确(如右侧SSI对应SSI_right)
  • 双侧并发症同时标记左右侧为1
  • 同一患者的多种并发症全部被记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:46:00