5
votes

I have a data frame with some columns with missing values. Is there a way (using dplyr) to efficiently calculate the percentage of each column that is missing i.e. NA. Sought of like a colSum equivalent. So I dont have to calculate each column percentage missing individually ?

3
You should provide a data object for testing.IRTFM
colMeans(is.na(x)) (base R rather than dplyr) might work.Ben Bolker
Your question is about dplyr. Calculate using dplyr. Am I missing something?akrun

3 Answers

16
votes

We can use summarise_each

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

First, I created a test data for you:

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

Then you can use colMeans(is.na(x)) :

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

Loving the concision of purrr::map for this type of thing:

x %>% map(~ mean(is.na(.)))