按NA级别设置一个因子

Zac*_*ach 9 r subset missing-data na r-factor

我在R中有一个因子,具有NA水平.

set.seed(1)
x <- sample(c(1, 2, NA), 25, replace=TRUE)
x <- factor(x, exclude = NULL)
> x
 [1] 1    2    2    <NA> 1    <NA> <NA> 2    2    1    1   
[12] 1    <NA> 2    <NA> 2    <NA> <NA> 2    <NA> <NA> 1   
[23] 2    1    1   
Levels: 1 2 <NA>
Run Code Online (Sandbox Code Playgroud)

如何按<NA>级别对该因子进行子集化?我试过的两种方法都行不通.

> x[is.na(x)]
factor(0)
Levels: 1 2 <NA>
> x[x=='<NA>']
factor(0)
Levels: 1 2 <NA>
Run Code Online (Sandbox Code Playgroud)

Ben*_*ker 9

让我感到惊讶的是,你尝试这样做并不起作用,但这似乎是:

x[is.na(levels(x)[x])]
Run Code Online (Sandbox Code Playgroud)

我通过观察str(x)并看到它是水平,而NA不是基础代码到达那里:

str(x)
 Factor w/ 3 levels "1","2",NA: 1 2 2 3 1 3 3 2 2 1 ...
Run Code Online (Sandbox Code Playgroud)