【问题标题】:R factor NA vs <NA>R 因子 NA 与 <NA>
【发布时间】:2013-06-11 12:48:31
【问题描述】:

我有以下数据框:

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's)标准化为 NA's。但是当我使用这个时:

df1[df1 == ''] <- NA

似乎有 2 类 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>

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

【问题讨论】:

  • NA != "NA"。也许运行is.na(df1$fact1) 可能会有所启发?
  • 另请注意,integercharacterlogicalfactor 显示 NA 的值不同。例如。显示这个data.frame: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)) )

标签: r missing-data na


【解决方案1】:

扩展 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>

【讨论】:

    猜你喜欢
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多