Les données manquantes sont représentées sous R par NA
(Not Available). Pour les retrouver, il suffit d’utiliser la fonction is.na
qui renvoie TRUE si la valeur vaut NA
et FALSE sinon. Mais nous allons voir à présent comment exploiter au mieux les différents outils à notre disposition pour gérer les valeurs manquantes au sein d’un dataframe.
Identifier les NA au sein d’un dataframe
Lisons le fichier ozoneNA.rds qui contient des NA
et affichons son sommaire :

Le décompte des individus manquants est spécifié variable par variable.
Plaçons-nous dans le cas où le statisticien devrait savoir repérer les individus possédant une valeur manquante. Sa première tâche est de connaître l’identifiant, ou le numéro de ces individus. Pour cela, il suffit d’utiliser la fonction is.na
.
Afin de faciliter la lecture, travaillons sur des données restreintes :
ozR <- ozoneNA[1:4,1:7]
ozR
# maxO3 T9 T12 T15 Ne9 Ne12 Ne15
# 601 87 15.6 18.5 18.4 4 4 8
# 602 82 17.0 18.4 17.7 5 5 7
# 603 NA NA NA 19.5 2 5 4
# 604 NA 16.2 NA 22.5 1 NA 0
is.na(ozR)
# maxO3 T9 T12 T15 Ne9 Ne12 Ne15
# 601 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
# 602 FALSE FALSE FALSE FALSE FALSE FALSE FALSE
# 603 TRUE TRUE TRUE FALSE FALSE FALSE FALSE
# 604 TRUE FALSE TRUE FALSE FALSE TRUE FALSE
À la question is.na
, R retourne un booléen. Ils prennent donc la valeur NA
dans le vecteur variable. Si nous souhaitons éliminer les individus qui possèdent au moins une valeur manquante, il faut d’abord repérer les valeurs manquantes. Nous souhaitons donc connaître les couples ligne/colonne des individus présentant une valeur manquante. Nous pouvons utiliser l’option arr.ind
(pour « array indices ») de la fonction which
:
which(is.na(ozR),arr.ind=TRUE)
# row col
# 603 3 1
# 604 4 1
# 603 3 2
# 603 3 3
# 604 4 3
# 604 4 6
La première donnée manquante correspond à la ligne 3 et la colonne 1, puis la suivante à la ligne 4 et la colonne 1...
Pour enlever les individus qui admettent au moins un NA
, il faut donc récupérer les indices des lignes qui se trouvent dans la colonne 1 du résultat :
indligneNA <- which(is.na(ozR),arr.ind=TRUE)[,1]
indligneNA
# 603 604 603 603 604 604
# 3 4 3 3 4 4
ozRsansNa <- ozR[-indligneNA,]
En résumé
Vous avez vu dans ce chapitre comment, à partir des fonctions is.na
et which
, identifier les NA qui viendraient à se trouver dans un de vos dataframes pour pouvoir les retirer de votre étude.
A présent, vous êtes presque près à mener vos propres analyses statistiques ! Encore un petit effort dans la présentation de quelques fonctions clés qui vous seront indispensables lors de vos futurs analyses.