替换NA值

时间:2015-04-10 23:48:20

标签: r missing-data

我有一个变量有三个值,NA,Yes,MayBe。

当我在该变量上使用level和class函数时,我得到了这些值

          > levels(Data1$Case)
          "Yes"                 "May Be"

          > class(Data1$Case)
          "factor"

我正在尝试用No替换NA值,所以我使用此代码

     Data1$Col1[is.na(Data1$Col1)]= "No"

我收到了错误,

       In `[<-.factor`(`*tmp*`, is.na(Data1$Col1), value = c(NA,  :
       invalid factor level, NA generated

我写了一个ifelse语句来替换NA,

      Data1$Col1=ifelse(is.na(Data1$Col1_ == 'TRUE'), "No",Data1$Col1)

这有效,但我正在寻找一些有效的方法来替换NA。

1 个答案:

答案 0 :(得分:6)

您可以使用addNA()levels<-替换功能。

x <- factor(c(NA, "Yes", "Maybe"))
# [1] <NA>  Yes   Maybe
# Levels: Maybe Yes

## If present, add NA to the factor levels
addNA(x)
# [1] <NA>  Yes   Maybe
# Levels: Maybe Yes <NA>
y <- addNA(x)

## replace the NA level with 'No'
levels(y)[is.na(levels(y))] <- "No"
y
# [1] No    Yes   Maybe
# Levels: Maybe Yes No