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

使用recode或case_when合并HIV风险变量并筛选数据集求助

基于OR逻辑筛选HIV风险样本的R代码方案

以下是几种直接可行的实现方式,针对不同的变量编码场景:

场景1:风险变量为"Yes"/"No"字符型

假设你的数据集名为df,四个风险变量分别是risk1、risk2、risk3、risk4,取值为"Yes"(有风险)或"No"(无风险),直接用filter结合逻辑或运算符|即可完成筛选:

library(dplyr)

# 保留至少有一项风险的样本
df_risk_subset <- df %>%
  filter(risk1 == "Yes" | risk2 == "Yes" | risk3 == "Yes" | risk4 == "Yes")

场景2:风险变量为二进制数值型(1=有风险,0=无风险)

如果变量是1/0编码,可通过求和简化条件,只要总和大于0就说明存在至少一项风险:

df_risk_subset <- df %>%
  filter(risk1 + risk2 + risk3 + risk4 > 0)

用case_when先标记再筛选(兼容多种编码)

如果需要先创建一个"是否有风险"的标记变量,再筛选,可使用case_when:

df_risk_subset <- df %>%
  mutate(has_any_risk = case_when(
    # 这里替换成你的实际风险判断条件
    risk1 == "Yes" | risk2 == "Yes" | risk3 == "Yes" | risk4 == "Yes" ~ TRUE,
    # 其余情况(无任何风险)标记为FALSE
    TRUE ~ FALSE
  )) %>%
  filter(has_any_risk)

常见问题排查

如果之前的代码失效,大概率是这几个原因:

  • 误用了逻辑与&而非逻辑或|
  • 变量取值不统一(比如有的是小写"yes",有的是大写"Yes",可先用str_to_upper()统一格式)
  • 未处理缺失值:如果存在NA,可在条件中加入is.na(riskX)(根据需求决定是否将缺失视为有风险)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:01:07