Преобразовать коэффициент в числовой в наборе данных со многими NA (ошибка: NA введены путем принуждения) - PullRequest
0 голосов
/ 24 октября 2019

Это общая проблема, но предложенные ответы на этом форуме, к сожалению, не работают для меня.

У меня есть фрейм данных: totalwithoutmaxcl, где я хочу изменить переменную Post_Diameter_0.1 с факторной на числовую. Я неоднократно получаю ошибку: НС вводятся по принуждению. После этого переменные остаются фактором. Следует отметить, что в наборе данных есть NA, и я использую . для десятичных чисел.

Я попробовал следующие вещи:

  1. as.numeric(levels(totalwithoutmaxcl$Post_Diameter_0.1))[totalwithoutmaxcl$Post_Diameter_0.1] и as.numeric(as.character(totalwithoutmaxcl$Post_Diameter_0.1))

Оба дали предупреждение:

NAs introduced by coercion

Я вручную закодировал NA, так что я решил удалить все NA и убедиться, что все численно.
  • gsub("\\NA", "", totalwithoutmaxcl$Post_Diameter_0.1)
  • gsub("[^0-9.]", "", totalwithoutmaxcl$Post_Diameter_0.1)

Это не изменило ошибку, упомянутую выше.

Этокак выглядят данные:

str(totalwithoutmaxcl$Post_Diameter_0.1)

 Factor w/ 103 levels "0","0.9","10",..: 21 96 NA 27 42 66 18 11 82 19 ...

head(totalwithoutmaxcl$Post_Diameter_0.1)

[1] 12.2 9    <NA> 13.2 16   22  
103 Levels: 0 0.9 10 10.1 10.2 10.5 10.7 10.8 10.9 11 11.1 11.2 11.3 11.34 11.4 11.5 11.6 11.8 11.9 12 12.2 12.3 12.4 12.6 12.7 ... NA
...