R

Transformer les valeurs manquantes en un facteur

Divers

La fonction addNAstr est maintenant disponible dans le package questionr (à partir de la version 0.3.0).

Sous R, les valeurs manquantes sont renseignés via la valeur NA.

Selon les fonctions, on peut indiquer à R de prendre en compte ou non ces valeurs manquantes.

Dans le cas d’une variable de type facteur, on peut vouloir considérer ces valeurs manquantes comme une modalité supplémentaire. Cela se fait via la fonction addNA :

df$x <- addNA(df$x)

Dans ce cas particulier, R va ajouter un niveau supplémentaire au facteur x, ce niveau ayant pour nom la valeur manquante, c’est-à-dire NA.

Si cela ne pose pas de problème pour une grande majorité de fonctions, certaines auront des soucis à gérer la présence d’une valeur manquante dans la liste des modalités.

Une solution consiste alors donner une valeur textuelle à cette modalité additionnelle (par exemple manquant). Une version améliorée de la fonction addNA a même été proposée sur http://stackoverflow.com/a/5817181 [1] :

addNAstr <- function (x, ifany = FALSE, as.string = TRUE)
{
    if (!is.factor(x)) 
        x <- factor(x)
    if (ifany & !any(is.na(x))) 
        return(x)
    ll <- levels(x)
    if (!any(is.na(ll))) 
        ll <- c(ll, NA)
    x <- factor(x, levels = ll, exclude = NULL)
    if (is.character(as.string)) {
         s <- as.string
         as.string <- TRUE
    } else
        s <- "NA"
    if(as.string) levels(x)[is.na(levels(x))] <- s
    x
}

Notes

[1Que j’ai légèrement modifiée pour permettre d’indiquer la chaine de caractères de son choix au paramètre as.string.