Как я могу сделать фактор в кадре данных постоянно числовым? - PullRequest
0 голосов
/ 08 января 2019

Позвольте мне начать с того, что я очень плохо знаком с программированием и R, так что это может быть глупым вопросом. Но здесь это идет.

Я работаю с большим фреймом данных, содержащим метаданные из корпуса. В одном столбце содержится уровень владения текстом (т. Е. «B1», «B2», «C1», «C2»). Мне удалось переименовать эти уровни факторов в «1», «2», «3» и «4», но мне нужно сделать их числовыми, чтобы я мог использовать этот столбец в качестве зависимой переменной в линейном моделировании. Я попробовал некоторые предложенные методы, но они не работают, и я не знаю почему.

Я пробовал следующий код, но когда я проверяю структуру, она все еще имеет коэффициент с четырьмя уровнями и не числовой:

> as.numeric(as.character(df$proficiency))
  [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2
 [42] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
 ...
[452] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4

> str(proficiency)
 Factor w/ 4 levels "1","2","3","4": 1 1 1 1 1 1 1 1 1 1 ...

#I have also tried this, but it does not work either. 
> df$proficiency<-as.numeric(as.character(df$proficiency))

> str(proficiency)
 Factor w/ 4 levels "1","2","3","4": 1 1 1 1 1 1 1 1 1 1 ...

Почему это происходит? Что я делаю не так?

1 Ответ

0 голосов
/ 08 января 2019

Проблема здесь в том, что вы присваиваете числовой столбец фрейма данных с именем proficility, но затем с помощью str() вы проверяете переменную с именем proficility. Как говорит @joran в комментариях, если вы сделаете str(df$proficiency), это преобразование должно быть правильным. Такое же преобразование может быть достигнуто также

df$proficiency<-as.numeric(levels(df$proficiency))[df$proficiency]

, что немного быстрее для больших фреймов данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...