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

统计数据框df中各国家分组下city列NA数量的可行方法

实现方案

以下两种方案都可以直接实现按国家分组统计city列NA数量的需求:

方案1:dplyr分组聚合(tidyverse生态推荐)

直接按country字段分组后聚合统计即可,无需做宽表转换:

library(dplyr)

city_na_stats <- df %>%
  group_by(country) %>%
  summarise(city_na_num = sum(is.na(city)))

返回结果city_na_stats包含两列:country为国家名称,city_na_num为对应国家下city列的NA数量。

方案2:base R原生实现(无需依赖第三方包)

使用aggregate函数做分组统计,注意设置na.action = na.pass避免默认丢弃NA行导致统计错误:

city_na_stats <- aggregate(
  city ~ country,
  data = df,
  FUN = function(x) sum(is.na(x)),
  na.action = na.pass
)

原方法失效原因

你之前使用pivot_wider搭配colSums(is.na(df))的思路不符合需求:

  • pivot_wider是长表转宽表的函数,你的需求是分组聚合,不需要做表结构转换
  • colSums(is.na(df))是统计整个数据集每一列的总NA数,不会按国家维度拆分统计,自然无法得到分国家的NA计数结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:48:05