如何用dplyr按组统计各列的NA值总数
按分组统计各列NA值总数的dplyr实现
首先确保你已经安装并加载了dplyr包:
install.packages("dplyr") library(dplyr)
使用以下代码可以按id分组,统计每个分组下x1和x2列的NA值总数:
# 构造数据框 id <- rep(c("a", "b", "c"), 3) x1 <- c(1, NA, NA, 2, 2, NA, 0, NA, 0) x2 <- c(1, 2, 3, NA, 12, NA, NA, 4, NA) df <- cbind.data.frame(id, x1, x2) # 分组统计NA数量 result <- df %>% group_by(id) %>% summarise(across(c(x1, x2), ~sum(is.na(.x)), .names = "{col}")) # 查看结果 print(result)
代码解释
group_by(id):按id字段对数据框进行分组summarise(across(...)):对指定列执行统计操作:c(x1, x2):指定需要统计的数值列~sum(is.na(.x)):对每一列计算NA值的总数(is.na()将NA转为逻辑值TRUE,sum()统计TRUE的数量即NA的个数).names = "{col}":保持结果列名与原列名一致
执行后得到的结果数据框包含3行(对应id=a、b、c)和2列(x1、x2),存储每个分组对应列的NA值总和,示例输出如下:
# A tibble: 3 × 3 id x1 x2 <chr> <int> <int> 1 a 1 1 2 b 2 0 3 c 1 2
内容的提问来源于stack exchange,提问作者Muhammad Kamil
相关产品推荐
相关产品推荐

