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

R语言按优先级合并多列受伤数据生成严重度因子变量的实现方法

R语言实现患者受伤严重度分级

实现逻辑

我们按照严重度从高到低的优先级依次判断:只要患者存在高等级的任意一种伤害,就直接赋值对应等级,不再判断更低等级的伤害,完全匹配需求的优先级规则。

方法1:使用dplyr包的case_when(可读性更高)

首先加载dplyr包,然后用case_when按优先级编写判断条件即可,注意列名含空格的需要用反引号包裹:

# 加载依赖包
library(dplyr)

# 生成Severity变量
df <- df %>%
  mutate(Severity = case_when(
    # 1级(最严重)判断条件
    `Car Accident` == 1 | Shot == 1 | ShotBow == 1 ~ 1,
    # 2级(中等严重)判断条件
    Stab == 1 | Cut == 1 | `Bicycle Accident` == 1 ~ 2,
    # 3级(轻微)判断条件
    Punched == 1 | Slapped == 1 | FellOver == 1 ~ 3,
    # 可选配置:无任何伤害的情况赋值为NA
    TRUE ~ NA_integer_
  ))

方法2:Base R原生实现(无需加载额外包)

用嵌套的ifelse实现,判断顺序同样按优先级从高到低:

df$Severity <- ifelse(
  df$`Car Accident` == 1 | df$Shot ==1 | df$ShotBow ==1,
  1,
  ifelse(
    df$Stab ==1 | df$Cut ==1 | df$`Bicycle Accident` ==1,
    2,
    3
  )
)
# 若需要处理无任何伤害的情况,可将最内层的3替换为ifelse(3级伤害判断条件, 3, NA)

结果验证

运行后示例患者的分级结果完全符合要求:

  • 患者1:仅Stab=1,Severity=2
  • 患者8:Cut=1、Punched=1,优先取2级,Severity=2
  • 患者10:Shot=1、Cut=1,优先取1级,Severity=1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:54:05