2017-08-10 32 views
0

我有一個因素列表,每個因素可能有一些NA。現在我想爲NA添加一個級別並將其重命名爲Missing。我也是要確保Missing是每個級別中的最後一個。這是我的代碼,但它不起作用。如何使用NA作爲因子級別並將其重命名爲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" 
    } 
}) 

任何幫助,將不勝感激。

+0

參見[此帖](https://stackoverflow.com/questions/27195956/convert-na-into-a-factor-level)和[此帖](HTTPS ://stackoverflow.com/questions/45216532/how-can-i-keep-na-when-i-change-levels)。 – lmo

回答

2

我們可以嘗試

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 
相關問題