R因子NA与<NA>的区别

10

我有以下数据框:

df1 <- data.frame(id = 1:20, fact1 = factor(rep(c('abc','def','NA',''),5)))
df1
   id fact1
1   1   abc
2   2   def
3   3    NA
4   4      
5   5   abc
6   6   def
7   7    NA
8   8      
9   9   abc
10 10   def
11 11    NA
12 12      
13 13   abc
14 14   def
15 15    NA
16 16      
17 17   abc
18 18   def
19 19    NA
20 20      

我试图将所有缺失值(''和NA)标准化为NA。然而,当我使用以下代码时:

df1[df1 == ''] <- NA

似乎存在两种缺失值。

df1
   id fact1
1   1   abc
2   2   def
3   3    NA
4   4  <NA>
5   5   abc
6   6   def
7   7    NA
8   8  <NA>
9   9   abc
10 10   def
11 11    NA
12 12  <NA>
13 13   abc
14 14   def
15 15    NA
16 16  <NA>
17 17   abc
18 18   def
19 19    NA
20 20  <NA>

处理这种情况是否有最佳实践方法?


3
С╣ЪУ«ИУ┐љУАїis.na(df1$fact1)УЃйУ«ЕСйаТюЅТЅђтљ»тЈЉ№╝їтЏаСИ║NAСИЇуГЅС║ј"NA"сђѓ - joran
2
还要注意,integercharacterlogicalfactor类型以不同的方式显示NA值。例如,显示此数据框:data.frame(w=c("a","b",NA), x=as.integer(c(1,2, NA)), y= as.factor(c(1,2, NA)), z=as.logical(c(TRUE,FALSE,NA)) ) - Kalin
1个回答

9

继续joran的评论:

df1 <- data.frame(id = 1:5, fact1 = factor(c('abc','def', NA, 'NA','')))
> df1
  id fact1
1  1   abc
2  2   def
3  3  <NA>
4  4    NA
5  5      

df1[df1 == '' | df1 == 'NA'] <- NA
> df1
  id fact1
1  1   abc
2  2   def
3  3  <NA>
4  4  <NA>
5  5  <NA>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接