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

基于ICD-10标准的MDI抑郁严重程度R代码优化问询

基于ICD-10标准的MDI抑郁严重程度判定(tidy风格实现)

核心思路

先对量表中需取最高分的条目(mdi_8a/b、mdi_10a/b)做合并处理,再分别统计核心标准、次要标准的达标项数,最后用case_when结合统计结果判定抑郁严重程度——这种写法逻辑清晰,且能轻松扩展中度、重度等其他类别的判定规则。

完整代码实现

library(tidyverse)

# 示例数据(替换为你的真实数据集)
set.seed(123)
mdi_data <- tibble(
  id = 1:10,
  mdi_1 = sample(1:5, 10, replace = TRUE),
  mdi_2 = sample(1:5, 10, replace = TRUE),
  mdi_3 = sample(1:5, 10, replace = TRUE),
  mdi_4 = sample(1:5, 10, replace = TRUE),
  mdi_5 = sample(1:5, 10, replace = TRUE),
  mdi_6 = sample(1:5, 10, replace = TRUE),
  mdi_7 = sample(1:5, 10, replace = TRUE),
  mdi_8a = sample(1:5, 10, replace = TRUE),
  mdi_8b = sample(1:5, 10, replace = TRUE),
  mdi_9 = sample(1:5, 10, replace = TRUE),
  mdi_10a = sample(1:5, 10, replace = TRUE),
  mdi_10b = sample(1:5, 10, replace = TRUE)
)

# 数据预处理 + 抑郁严重程度判定
mdi_data_with_severity <- mdi_data %>%
  # 合并需取最高分的条目:mdi_8、mdi_10
  rowwise() %>%
  mutate(
    mdi_8 = max(mdi_8a, mdi_8b),
    mdi_10 = max(mdi_10a, mdi_10b)
  ) %>%
  ungroup() %>%
  # 统计核心标准(mdi_1-3)达标数(得分≥4)
  mutate(
    core_meet = rowSums(across(mdi_1:mdi_3, ~.x >= 4))
  ) %>%
  # 统计次要标准达标数(处理后的7项:mdi_4-7、mdi_8、mdi_9、mdi_10,得分≥3)
  mutate(
    secondary_meet = rowSums(across(c(mdi_4:mdi_7, mdi_8, mdi_9, mdi_10), ~.x >= 3))
  ) %>%
  # 判定抑郁严重程度(此处先实现轻度,可扩展其他类别)
  mutate(
    depression_severity = case_when(
      core_meet >= 2 & between(secondary_meet, 2, 3) ~ "轻度抑郁",
      # 可在此添加中度、重度等其他ICD-10判定规则
      TRUE ~ "无抑郁/未达轻度标准"
    )
  )

# 查看结果
glimpse(mdi_data_with_severity)

代码说明

  1. 条目合并:用rowwise()+max()处理mdi_8和mdi_10的子条目,确保取每个被试的最高分,符合量表规则。
  2. 达标数统计:用across()+rowSums()批量计算核心/次要标准的达标项数,避免逐个枚举变量,代码更简洁易维护。
  3. 严重程度判定:case_when的条件直接基于统计后的达标数,逻辑直观,后续添加中度(如核心≥2+次要≥4)、重度(核心≥3+次要≥5)等规则时,只需在case_when中新增分支即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 18:52:38