首页 > 解决方案 > 如何仅获取具有 NA 值和 NA 数量的列

问题描述

我有一个数据集,其中一些列具有 NA 值。我只需要显示具有 NA 值的列名以及每个列中 NA 值的总数。我已经能够解决问题的不同部分,但不能同时解决这两个问题。

这仅给了我包含 NA 值的列的列名。但我希望 NA 总数显示在每个列名下。

nacol<- colnames(df)[colSums(is.na(df)) > 0]

这正是我想要的,但它也显示了数据框中其他列的总数为零,我不希望显示这些。

df %>% summarise_all(funs(sum(is.na(.))))

我显然是一个完整的初学者。我意识到这是一个非常容易解决的问题,但我已经尝试了几个小时,我只是感到沮丧。请帮忙。谢谢!

标签: r

解决方案


我们可以使用FilterwithcolSums删除 0 值

Filter(function(x) x > 0, colSums(is.na(df)))
#a c 
#2 1

select_ifdplyr

library(dplyr)
df %>% 
  summarise_all(~(sum(is.na(.)))) %>%
  select_if(. > 0)

我们也可以先选择具有any NA值的列,然后对它们进行计数。

df %>%
  select_if(~any(is.na(.))) %>%
  summarise_all(~(sum(is.na(.))))

数据

df <- data.frame(a = c(2, 3, NA, NA, 1), b = 1:5, c = c(1, 3, 4, NA, 1))

推荐阅读