将类别因子列转换为NA

时间:2019-10-22 11:20:36

标签: r dataframe for-loop

如何在不影响现有NA的情况下将一列类因子转换为数字? 我不想将其转换为0!

   >Conceded
  [1] 665  515  NA   NA   NA   67   98   15   31   NA   NA   NA   NA   NA   2195 2525 1756 6366 3143
  [20] 7857 5926 2254 3199 4297 4568 2246 1506 2291
  21 Levels: 15 1506 1756 2195 2246 2254 2291 2525 31 3143 3199 4297 4568 515 5926 6366 665 67 ... 
  NA

   >class(Conceded)
         [1]"factor"

   >as.numeric(Conceded)
 [1] 17 14 21 21 21 18 20  1  9 21 21 21 21 21  4  8  3 16 10 19 15  6 11 12 13  5  2  7

1)将因子向量转换为数字向量时,如何保留NA的值? 2)这些转换结果还会显示哪些值 3)为什么我需要先转换为字符向量,然后再转换为数字向量?

1 个答案:

答案 0 :(得分:2)

您可能需要先转换为字符,然后转换为数字。否则,将使用因子水平作为值,而不是文本编码的原始值。

例如。

x <- factor(c(23,4,7,16, 10, NA))

as.numeric(x) # wrong values
as.numeric(as.character(x)) # correct values