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

R语言聚合数据时,获取国家对应疫苗接种率最后有效值异常问题

解决分组提取非NA最后值的R代码问题

问题根源

  • 第一段代码失效原因:last(people_vaccinated_per_hundred)会直接提取分组后该列的最后一行值,若最后一行是NA,结果就会返回NA,不符合预期。
  • 第二段代码的语法错误:错误地将列名people_vaccinated_per_hundred当作函数调用(添加了(na.rm = TRUE)),R无法识别这个不存在的函数,因此运行失败。

正确解决方案

方法1:先过滤NA再取最后值

先在分组内剔除该列的NA行,再提取最后一个有效数值。如果某个分组全是NA,结果会返回NA:

aggre_data <- combined %>% 
    group_by(location) %>%
    filter(!is.na(people_vaccinated_per_hundred)) %>%
    summarise(Last_value_vacc = last(people_vaccinated_per_hundred))

方法2:用na.omit()直接处理列

更简洁的写法,直接对列剔除NA后取最后一个值:

aggre_data <- combined %>% 
    group_by(location) %>%
    summarise(Last_value_vacc = last(na.omit(people_vaccinated_per_hundred)))

关键注意点:先按时间排序!

既然是疫苗接种数据,必然是按时间维度记录的,必须先按日期排序,否则last()拿到的可能不是最新的接种率数据。假设数据包含date列,先排序再处理:

aggre_data <- combined %>% 
    arrange(date) %>%  # 按日期升序排序,确保最新数据在最后
    group_by(location) %>%
    filter(!is.na(people_vaccinated_per_hundred)) %>%
    summarise(Last_value_vacc = last(people_vaccinated_per_hundred))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 15:24:23