R如何将其中一个级别更改为NA

时间:2014-08-18 00:38:18

标签: r r-factor

我有一个数据集,其中一个列的因子级别为"a" "b" "c" "NotPerformed"。如何将所有"NotPerformed"因子更改为NA?

4 个答案:

答案 0 :(得分:11)

将等级设为NA:

x <- factor(c("a", "b", "c", "NotPerformed"))
x
## [1] a            b            c            NotPerformed
## Levels: a b c NotPerformed
levels(x)[levels(x)=='NotPerformed'] <- NA
x
## [1] a    b    c    <NA>
## Levels: a b c

请注意,系数级别已删除。

答案 1 :(得分:4)

我修改了我的旧答案并提供了截至2016年9月您可以执行的操作。随着dplyr包的开发,现在您可以使用recode_factor()来完成这项工作。

x <- factor(c("a", "b", "c", "NotPerformed"))

# [1] a            b            c            NotPerformed
# Levels: a b c NotPerformed

library(dplyr)
recode_factor(x, NotPerformed = NA_character_)
# [1] a    b    c    <NA>
# Levels: a b c

答案 2 :(得分:1)

或者只使用内置的exclude选项,无论初始变量是字符还是因子,都可以使用。

x <- c("a", "b", "c", "NotPerformed")

factor(x, exclude = "NotPerformed")
[1] a    b    c    <NA>
Levels: a b c

factor(factor(x), exclude = "NotPerformed")
[1] a    b    c    <NA>
Levels: a b c

答案 3 :(得分:0)

将级别之一设置为NAtidyverse 管道%>%
这也许可以更好地用作评论,但是我没有那么多声誉。
在我的情况下,income变量是int,其值为c(1:7, 9)。在这些级别中,“ 9”代表“不希望回答”。

## when all int should be fctr 
New_data <- data %>% mutate_if(is.integer, as.factor)  %>% 
mutate(income = fct_recode(income, NULL = "9"))

我也尝试过recode(),它不起作用。