使用dplyr计算每列中NA值的百分比

7

我有一个数据框,其中某些列存在缺失值。是否可以使用dplyr有效地计算每个列缺失的百分比,即NA。类似于colSum的功能。这样我就不必单独计算每个列的缺失百分比了吗?


1
你应该提供一个数据对象进行测试。 - IRTFM
1
colMeans(is.na(x))(基于R基础而非dplyr)可能有效。 - Ben Bolker
你的问题涉及到 dplyr。使用 dplyr 进行计算。我有什么遗漏吗? - akrun
3个回答

18

首先,我为您创建了一组测试数据:

a<- c(1,NA,NA,4)
b<- c(NA,2,3,4)
x<- data.frame(a,b)
x
#    a  b
# 1  1 NA
# 2 NA  2
# 3 NA  3
# 4  4  4

那么你可以使用 colMeans(is.na(x))

colMeans(is.na(x))
#    a    b 
# 0.50 0.25 

2
感谢Ben Bolker的评论。 - user3710546
谢谢,下次会添加数据。 - MP61

17

我们可以使用summarise_each

 library(dplyr)
 x %>% 
   summarise_each(funs(100*mean(is.na(.))))

8
我喜欢purrr::map的简洁性,它非常适合这种情况: x %>% map(~ mean(is.na(.)))

x %>% map(~ mean(is.na(.))) %>% keep(~ 1 %in% .) %>% names()这将仅保留所有列都是na的列。 - mtelesha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接