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

使用R代码计算患病率时返回NA的问题求助

患病率计算返回NA的排查与解决

以下是针对你的R代码问题的常见修复方案:

1. 处理Result列的NA值

sum()函数遇到NA会直接返回NA,这是最常见的诱因。在sum里添加na.rm = TRUE忽略缺失值:

S1 %>% 
  group_by(Year, Province, Test) %>% 
  summarise(Prevalence = sum(Result, na.rm = TRUE)/n(), .groups = "drop")

.groups = "drop"用于清理分组残留,避免不必要的警告。

2. 确保Result是数值型

如果Result是字符(如"阳性"/"阴性")或因子类型,sum()无法正常计算,会返回NA。需先转换为数值:

  • 若为二元分类(1=阳性、0=阴性):
S1 <- S1 %>% mutate(Result = as.numeric(Result))
  • 若为字符描述,先映射为数值:
S1 <- S1 %>% mutate(Result = case_when(
  Result == "阳性" ~ 1,
  Result == "阴性" ~ 0,
  TRUE ~ NA_real_ # 处理未匹配的未知值
))

转换完成后再运行原计算代码。

3. 过滤无效数据行

如果部分分组下所有Result都是NA,或存在空行,可先过滤掉无效行:

S1 %>% 
  filter(!is.na(Result)) %>% 
  group_by(Year, Province, Test) %>% 
  summarise(Prevalence = sum(Result)/n(), .groups = "drop")

4. 检查数据结构

先确认Result列的类型和缺失值情况,方便定位问题:

str(S1) # 查看数据结构
table(is.na(S1$Result)) # 统计NA的数量

若Result是逻辑型,sum()可正常计算(TRUE=1、FALSE=0),但仍需注意NA值的处理。

内容的提问来源于stack exchange,提问作者sunday O. ochai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 06:10:03