Comment gérer les valeurs NaN dans R (avec exemples)
Dans R, NaN signifie Not a Number.
Généralement, les valeurs NaN se produisent lorsque vous tentez d’effectuer un calcul qui aboutit à un résultat non valide.
Par exemple, diviser par zéro ou calculer le log d’un nombre négatif produit tous deux des valeurs NaN :
#attempt to divide by zero 0 / 0 [1] NaN #attempt to calculate log of negative value log(-12) [1] NaN
Notez que les valeurs NaN sont différentes des valeurs NA , qui représentent simplement des valeurs manquantes.
Vous pouvez utiliser les méthodes suivantes pour gérer les valeurs NaN dans R :
#identify positions in vector with NaN values which(is.nan(x)) #count total NaN values in vector sum(is.nan(x)) #remove NaN values in vector x_new <- x[!is.nan(x)] #replace NaN values in vector x[is.nan(x)] <- 0
Les exemples suivants montrent comment utiliser chacune de ces méthodes dans la pratique.
Exemple 1 : identifier les positions dans un vecteur avec des valeurs NaN
Le code suivant montre comment identifier les positions dans un vecteur qui contiennent des valeurs NaN :
#create vector with some NaN values
x <- c(1, NaN, 12, NaN, 50, 30)
#identify positions with NaN values
which(is.nan(x))
[1] 2 4
À partir du résultat, nous pouvons voir que les éléments en positions 2 et 4 dans le vecteur sont des valeurs NaN.
Exemple 2 : compter les valeurs totales de NaN dans un vecteur
Le code suivant montre comment compter le nombre total de valeurs NaN dans un vecteur dans R :
#create vector with some NaN values
x <- c(1, NaN, 12, NaN, 50, 30)
#identify positions with NaN values
sum(is.nan(x))
[1] 2
À partir du résultat, nous pouvons voir qu’il y a 2 valeurs NaN totales dans le vecteur.
Exemple 3 : Supprimer les valeurs NaN dans le vecteur
Le code suivant montre comment créer un nouveau vecteur dont les valeurs NaN ont été supprimées du vecteur d’origine :
#create vector with some NaN values
x <- c(1, NaN, 12, NaN, 50, 30)
#define new vector with NaN values removed
x_new <- x[!is.nan(x)]
#view new vector
x_new
[1] 1 12 50 30
Notez que les deux valeurs NaN ont été supprimées du vecteur.
Exemple 4 : Remplacer les valeurs NaN dans le vecteur
Le code suivant montre comment remplacer les valeurs NaN dans un vecteur par des zéros :
#create vector with some NaN values
x <- c(1, NaN, 12, NaN, 50, 30)
#replace NaN values with zero
x[is.nan(x)] <- 0
#view updated vector
x
[1] 1 0 12 0 50 30
Notez que les deux valeurs NaN ont été remplacées par des zéros dans le vecteur.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans R :
Comment interpoler les valeurs manquantes dans R
Comment trouver et compter les valeurs manquantes dans R
Comment utiliser « Is Not NA » dans R