如何在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
相关产品推荐
相关产品推荐

