Je veux compter le nombre de NA
valeurs dans une colonne de bloc de données. Disons que mon bloc de données est appelé df
et que le nom de la colonne que je considère est col
. La façon dont j'ai imaginé est la suivante:
sapply(df$col, function(x) sum(length(which(is.na(x)))))
Est-ce le moyen le plus efficace / le plus efficace de le faire?
value
, autre que l'NA
écriture d'une fonction booléenneis.value
puis l'utilisation desum(is.value(df$col))
la voie à suivre ou y a-t-il une syntaxe directe plus concise pour cela?sum(df$col==value,na.rm=FALSE)
fait l'affaire.na.rm=TRUE
, car sinon, s'ildf$col
contient des NA,sum
il reviendraNA
.Si vous recherchez des
NA
nombres pour chaque colonne d'un dataframe, alors:devrait vous donner une liste avec les nombres pour chaque colonne.
Devrait bien afficher les données dans une trame de données comme:
la source
na_count$name<-rownames(na_count)
.na_count <-sapply(x, function(y) sum(is.na(y)))
est une alternative plus courte.Essayez la
colSums
fonctionla source
Si vous cherchez à compter le nombre de NA dans l'ensemble de la base de données, vous pouvez également utiliser
la source
En
summary()
sortie, la fonction compte également lesNA
s donc on peut utiliser cette fonction si l'on veut la somme deNA
s dans plusieurs variables.la source
summary
sortie lorsqu'elle est utilisée sur une seule colonne est utilisable, tandis que sa sortie à partir d'un bloc de données entier est un caractère et que les décomptes sont difficiles à extraire si vous en avez besoin plus tard. Voirc(summary(mtcars))
.Une façon tidyverse de compter le nombre de valeurs nulles dans chaque colonne d'un dataframe:
la source
df %>% summarise_all(funs(sum(is.na(.))))
df %>% map_df(~sum(is.na(.)))
ou sans dplyr asmap_df(~sum(is.na(df)))
Cette forme, légèrement modifiée par rapport à celle de Kevin Ogoros:
renvoie NA compte comme tableau int nommé
la source
na_count <-function (x) lapply(x, function(y) sum(is.na(y)))
Une solution Tidyverse rapide et facile pour obtenir un
NA
compte pour toutes les colonnes consiste à utilisersummarise_all()
ce qui, je pense, rend une solution beaucoup plus facile à lire que d'utiliserpurrr
ousapply
la source
Essaye ça:
la source
La réponse de l'utilisateur rrs est correcte, mais cela ne vous indique que le nombre de valeurs NA dans la colonne particulière de la trame de données que vous passez pour obtenir le nombre de valeurs NA pour la trame de données entière, essayez ceci:
Cela fait l'affaire
la source
apply(df, 2, function(x) sum(is.na(x)))
J'ai lu un fichier csv à partir du répertoire local. Le code suivant fonctionne pour moi.
la source
Similaire à la réponse de hute37 mais utilisant le
purrr
package. Je pense que cette approche tidyverse est plus simple que la réponse proposée par AbiK.Remarque: le tilde (
~
) crée une fonction anonyme. Et le '.' fait référence à l'entrée pour la fonction anonyme, dans ce cas le data.framedf
.la source
Vous pouvez l'utiliser pour compter le nombre de NA ou de blancs dans chaque colonne
la source
la source