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

按RunID分组判断组内是否存在指定诊断的R语言问题排查

错误原因及解决方案

错误根源

你代码里的any(diagnosis="Pneumonia")存在两个问题:

  1. 用了赋值运算符=而非比较运算符==,导致any()接收的是字符型的诊断值,不是逻辑判断结果,触发类型转换警告。
  2. 未处理diagnosis中的NA值,即便分组内有目标诊断,any()也可能返回NA。

修正方案

方案1:修正比较逻辑并忽略NA

library(dplyr)

data %>%
  group_by(RunID) %>%
  mutate(Pneumonia = ifelse(any(diagnosis == "Pneumonia", na.rm = TRUE), 1, 0)) %>%
  ungroup()

方案2:用%in%简化逻辑

%in%适配字符型匹配,配合as.integer可直接将布尔值转为1/0:

data %>%
  group_by(RunID) %>%
  mutate(Pneumonia = as.integer(any("Pneumonia" %in% diagnosis, na.rm = TRUE))) %>%
  ungroup()

方案3:使用dplyr的if_any函数(适用于dplyr 1.0.0及以上版本)

data %>%
  group_by(RunID) %>%
  mutate(Pneumonia = as.integer(if_any(diagnosis, ~ .x == "Pneumonia", na.rm = TRUE))) %>%
  ungroup()

以上三种方案都能生成你需要的desired结果,既解决类型转换警告,又能正确标记分组内是否存在目标诊断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:45:30