R:如何在每个data.frame列中总计NA的数量

Adr*_*ian 12 r

为了计算整个data.frame中的NA数量,我可以使用sum(is.na(df),如何计算大数据框架的每列中的NA数量?我尝试过,apply(df, 2, function (x) sum(is.na(df$x))但似乎没有用.

akr*_*run 22

你可以尝试:

colSums(is.na(df))
#  V1 V2 V3 V4 V5 
#   2  4  2  4  4 
Run Code Online (Sandbox Code Playgroud)

数据

set.seed(42)
df <- as.data.frame(matrix(sample(c(NA,0:4), 5*20,replace=TRUE), ncol=5))
Run Code Online (Sandbox Code Playgroud)


cli*_*ent 13

由于该dplyr::summarise_all函数已被原始函数内部的 using取代并且已被弃用,当前的 tidyverse 方法可能类似于:acrossdplyr::funs

df %>% 
  summarise(across(everything(), ~ sum(is.na(.x))))
Run Code Online (Sandbox Code Playgroud)


Net*_*tle 12

dplyr...

df %>%
  summarise_all(funs(sum(is.na(.))))
Run Code Online (Sandbox Code Playgroud)

或使用purrr图书馆

map(df, ~sum(is.na(.)))
Run Code Online (Sandbox Code Playgroud)


Vic*_*orp 5

您可以使用sapply

sapply(X = df, FUN = function(x) sum(is.na(x)))
Run Code Online (Sandbox Code Playgroud)