2017-08-10 2 views
0

Ich habe eine Liste von Faktoren und jeder Faktor hat einige NA. Jetzt möchte ich ein Level für NA hinzufügen und es als Missing umbenennen. Ich stelle auch sicher, dass Missing der letzte in jedem Level ist. Hier ist mein Code, aber es funktioniert nicht.Wie verwendet man NA als Faktor-Ebene und benennen Sie es in R?

data = list(a = factor(c(1,1,2,2,3,NA,NA)), 
      b = factor(c("a","b","b")), 
      c = factor(c(3,4,NA,3))) 
data = lapply(data, FUN = function(x) { 
    if (any(is.na(x))) { 
     x = addNA(x) 
     levels(x)[length(levels(x))] = "Missing" 
    } 
}) 

Jede Hilfe wäre willkommen.

+0

See [Dieser Beitrag] (https://stackoverflow.com/questions/27195956/convert-na-into-a-factor-level) und [dieser Beitrag] (https : //stackoverflow.com/questions/45216532/how-can-i-keep-na-when-i-change-levels). – lmo

Antwort

2

Wir können versuchen,

lapply(data, function(x) { 
    if(anyNA(x)) { 
    levels(x) <- c(levels(x), "Missing") 
    x[is.na(x)] <- "Missing" 
    x} 
    else x 

    }) 
#$a 
#[1] 1  1  2  2  3  Missing Missing 
#Levels: 1 2 3 Missing 

#$b 
#[1] a b b 
#Levels: a b 

#$c 
#[1] 3  4  Missing 3  
#Levels: 3 4 Missing 
Verwandte Themen