如何使用R语言统计每个id对应的NA缺失值数量
R语言按ID统计NA值数量实现方案
我们可以通过tidyverse套件或基础R两种方式实现需求,示例如下:
方法1:tidyverse实现(推荐,代码更简洁易读)
首先加载依赖包:library(tidyverse)
运行如下代码得到结果:
result <- df %>% # 过滤掉id为NA的无效行 filter(!is.na(id)) %>% # 按id分组 group_by(id) %>% # 统计time列的NA值总数,如果需要统计所有列的NA总数,可改为sum(is.na(pick(everything()))) summarise(na_count = sum(is.na(time)))
运行后得到的结果和你需要的输出效果一致,对应你提供的示例数据,统计结果为:
- id=1的NA数量为4
- id=2的NA数量为8
- id=3的NA数量为0
方法2:基础R实现(无需安装额外包)
# 筛选id非空的有效数据 valid_df <- df[!is.na(df$id), ] # 按id分组统计time列的NA值 result <- aggregate(time ~ id, data = valid_df, function(x) sum(is.na(x)), na.action = NULL) # 修改列名匹配需求 colnames(result) <- c("id", "na_count")
内容的提问来源于stack exchange,提问作者user11418708
相关产品推荐
相关产品推荐

