Je veux compter le nombre de valeurs NA
dans une colonne de trame de données. Disons que ma trame de données s'appelle df
et que le nom de la colonne que je considère est col
. La façon dont je suis venu avec est la suivante:
sapply(df$col, function(x) sum(length(which(is.na(x)))))
Est-ce un moyen efficace/efficace de le faire?
Vous réfléchissez au problème:
sum(is.na(df$col))
Si vous recherchez NA
compte pour chaque colonne dans un cadre de données, alors:
na_count <-sapply(x, function(y) sum(length(which(is.na(y)))))
devrait vous donner une liste avec les comptes pour chaque colonne.
na_count <- data.frame(na_count)
Doit bien sortir les données dans un cadre de données tel que:
----------------------
| row.names | na_count
------------------------
| column_1 | count
Essayez la fonction colSums
df <- data.frame(x = c(1,2,NA), y = rep(NA, 3))
colSums(is.na(df))
#x y
#1 3
Si vous souhaitez compter le nombre d'AN dans l'ensemble du cadre de données, vous pouvez également utiliser
sum(is.na(df))
Dans la sortie summary()
, la fonction compte également le NA
s afin que vous puissiez utiliser cette fonction si vous voulez la somme de NA
s dans plusieurs variables.
Un moyen simple de compter le nombre de valeurs NULL dans chaque colonne d'un cadre de données:
library(tidyverse)
library(purrr)
df %>%
map_df(function(x) sum(is.na(x))) %>%
gather(feature, num_nulls) %>%
print(n = 100)
Cette forme, légèrement différente de celle de Kevin Ogoros:
na_count <-function (x) sapply(x, function(y) sum(is.na(y)))
renvoie NA compte comme tableau nommé int
La réponse de l'utilisateur est correcte, mais cela ne vous indique que le nombre de valeurs NA dans la colonne particulière du bloc de données que vous transmettez pour obtenir le nombre de valeurs NA pour l'ensemble du bloc de données. Essayez ceci:
apply(<name of dataFrame>, 2<for getting column stats>, function(x) {sum(is.na(x))})
Cela fait l'affaire
Essaye ça:
length(df$col[is.na(df$col)])
J'ai lu un fichier csv à partir du répertoire local. Le code suivant fonctionne pour moi.
# to get number of which contains na
sum(is.na(df[, c(columnName)]) # to get number of na row
# to get number of which not contains na
sum(!is.na(df[, c(columnName)])
#here columnName is your desire column name
Similaire à la réponse de hute37 mais utilisant la bibliothèque de ronronnement. Je pense que cette approche tidyverse est plus simple que la réponse proposée par AbiK.
map_dbl(df, ~sum(is.na(.)))
Remarque: le tilda crée une fonction anonyme. Et le '.' fait référence à l'entrée pour la fonction anonyme. Dans ce cas, le data.frame df.
Vous pouvez l'utiliser pour compter le nombre de NA ou de blancs dans chaque colonne.
colSums(is.na(data_set_name)|data_set_name == '')