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

如何在RStudio中基于两列条件为co.inf数据集创建感染状态变量

如何在RStudio中创建感染状态变量inf.st

我来帮你搞定这个感染状态变量的创建,在R里有两种常用且可靠的方法,下面给你详细说明:

方法1:使用dplyr的case_when(推荐,可读性强)

如果你的项目已经在使用tidyverse工具链,case_when()是处理多分支条件判断的绝佳选择,代码逻辑一目了然:

首先确保你已经安装并加载了dplyr包:

# 若未安装dplyr先执行安装
install.packages("dplyr")
library(dplyr)

然后通过mutate()添加新变量:

co.inf <- co.inf %>%
  mutate(inf.st = case_when(
    # 无任何感染
    Malaria_RDT == 0 & CCA_test == 0 ~ 0,
    # 仅感染疟疾
    Malaria_RDT > 0 & CCA_test == 0 ~ 1,
    # 仅感染血吸虫病
    Malaria_RDT == 0 & CCA_test > 0 ~ 2,
    # 同时感染两种疾病
    Malaria_RDT >= 1 & CCA_test >= 1 ~ 3,
    # 处理所有未匹配的情况(比如缺失值、异常值)
    TRUE ~ NA_real_
  ))

注:最后一行TRUE ~ NA_real_是兜底逻辑,确保所有不符合前4种条件的观测值都会被标记为NA,避免出现意料之外的错误值。

方法2:使用基础R的嵌套ifelse(无需额外包)

如果你不想加载任何第三方包,可以用基础R的ifelse()嵌套来实现:

co.inf$inf.st <- ifelse(
  co.inf$Malaria_RDT == 0 & co.inf$CCA_test == 0, 0,
  ifelse(
    co.inf$Malaria_RDT > 0 & co.inf$CCA_test == 0, 1,
    ifelse(
      co.inf$Malaria_RDT == 0 & co.inf$CCA_test > 0, 2,
      ifelse(
        co.inf$Malaria_RDT >= 1 & co.inf$CCA_test >= 1, 3, NA
      )
    )
  )
)

这种方法无需额外依赖,但当条件分支较多时,可读性会稍弱一些。

验证结果正确性

创建完变量后,你可以用table()函数快速检查新变量和原诊断变量的对应关系,确保逻辑没有错误:

table(co.inf$Malaria_RDT, co.inf$CCA_test, co.inf$inf.st)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 12:47:48