Des colonnes de recherche avec l'ensemble des valeurs manquantes
Je suis en train d'écrire une fonction qui a besoin d'un vérifier sur si (et laquelle!) la colonne (variable) est l'ensemble des valeurs manquantes (NA
, <NA>
). Voici le fragment de la fonction:
test1 <- data.frame (matrix(c(1,2,3,NA,2,3,NA,NA,2), 3,3))
test2 <- data.frame (matrix(c(1,2,3,NA,NA,NA,NA,NA,2), 3,3))
na.test <- function (data) {
if (colSums(!is.na(data) == 0)){
stop ("The some variable in the dataset has all missing value,
remove the column to proceed")
}
}
na.test (test1)
Warning message:
In if (colSums(!is.na(data) == 0)) { :
the condition has length > 1 and only the first element will be used
Q1: Pourquoi l'erreur ci-dessus et toutes les corrections ?
T2: Est-il un moyen pour savoir qui de colonnes ont tous NA
, par exemple sortie de la liste (nom de variable ou de numéro de colonne)?
- J'ai l'impression que cela doit avoir été une réponse avant: quelque chose comme
names(data)[lapply(data,function(x) all(is.na(x)))]
- Votre parenthèses sont mauvais. Écrire
colSums(!is.na(data)) == 0
au lieu decolSums(!is.na(data) == 0)
.
Vous devez vous connecter pour publier un commentaire.
C'est assez facile avec
sapply
et une petite fonction anonyme:Et à l'intérieur d'une fonction:
NA
sera declass
logical
. De plus, si vous ne vous attendez à aucune autre logique colonnes, alors cela vous donne de la NA colonnes.NA
, commeNA_integer_
, qui apparaissent comme desNA
mais ne sont pas logiques. Il peut dépendre de l'endroit où leNA
s est venu de ...any()
au lieu deall()
.Dans dplyr
ou, à l'inverse
À trouver les colonnes avec toutes les valeurs manquantes
Pour tester si les colonnes de toutes les valeurs manquantes:
Pour obtenir les colonnes qui ont tous des valeurs manquantes:
Celui-ci va générer les noms de colonnes qui sont plein de NAs:
La commande suivante vous donne un joli tableau avec les colonnes qui n'ont NA des valeurs:
C'est une amélioration pour la première réponse que vous avez, qui ne fonctionne pas correctement dans certains cas.
dplyr approche pour trouver le nombre de NAs pour chaque colonne: