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

R语言数据处理问题:COVID前死亡数Top5结果不符且max返回NA

问题分析与解决方案

一、为啥Top5国家和预期对不上?

你遇到的第一个问题——美国没出现在Top5里,大概率跑不出这几个原因:

  • 区域名称不匹配:先看看你数据里美国对应的region值是不是和你想的一致?比如可能数据里是"United States"而不是中文的“美国”,或者拼写是"US"/"USA",导致分组时美国确实在里面,但你没对应上名称。
  • 美国的死亡数据有缺失:如果美国的death列里有NA,max(death)会直接返回NA,排序的时候NA会被甩到最后,自然进不了Top5。你可以单独查一下美国的死亡数据情况:
    df %>% filter(region == "美国") %>% pull(death) %>% summary()
    
  • 分组逻辑错了:会不会你的df里美国被拆成了州级别的子区域?这时候按region分组的话,每个州单独算max,没有汇总到国家层面,那自然看不到美国的总max值。得先确保region列是国家级别的分组。

二、为啥max(df$death)返回NA?

这个问题很直白:你的death列里有缺失值(NA)。R里的max()函数默认只要输入里有NA,就会返回NA。解决办法很简单,加个na.rm = TRUE参数忽略缺失值就行:

max(df$death, na.rm = TRUE)

你也可以先统计下death列有多少缺失值:

sum(is.na(df$death))  # 数一下缺失值的数量

给你改好的代码

结合上面的分析,调整你的代码,同时处理缺失值和分组问题:

df_test <- df %>%
  group_by(region) %>%
  summarise(death = max(death, na.rm = TRUE)) %>%  # 加na.rm忽略缺失值
  filter(!is.na(death)) %>%  # 去掉那些死亡数据全是NA的区域
  arrange(desc(death)) %>%
  top_n(5)

另外,建议你先看看region列的所有唯一值,确认美国的名称到底是什么:

unique(df$region)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:29:43