【问题标题】:How to use NA as a factor level and rename it in R? [duplicate]如何使用 NA 作为因子水平并在 R 中重命名? [复制]
【发布时间】:2018-01-18 22:05:53
【问题描述】:

我有一个因素列表,每个因素可能有一些NA。现在我想为NA 添加一个级别并将其重命名为Missing。我还要确保Missing 是每个级别的最后一个。这是我的代码,但它不起作用。

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"
    }
})

任何帮助将不胜感激。

【问题讨论】:

标签: r


【解决方案1】:

我们可以试试

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 2023-04-01
    • 1970-01-01
    • 2015-01-27
    相关资源
    最近更新 更多