我有一个数据集,其中一个列的因子级别为"a" "b" "c" "NotPerformed"
。如何将所有"NotPerformed"
因子更改为NA?
答案 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)
将级别之一设置为NA
至tidyverse
管道,%>%
。
这也许可以更好地用作评论,但是我没有那么多声誉。
在我的情况下,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()
,它不起作用。