Преобразуйте текстовые данные в одном столбце в числовые данные в R

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

Genre         Genre_numerical
Comedy        1
Action        2
Suspense      3
Comedy        1
Biography     4

person lala    schedule 30.04.2020    source источник


Ответы (2)


В R вы можете сделать фактор категориальных данных. Это основная вещь, которую нужно делать (или избегать до последнего момента) в R. Посмотрите на неупорядоченные и неупорядоченные факторы, если вам нужно освежить это.

Ваш вопрос, кажется, больше относится к вопросу о том, как соотносить категориальные данные.

Посмотрите на этот ответ, а затем прочтите ветку: Построить эквивалент корреляционной матрицы для факторов (категориальные данные)? А смешанные типы?

Сила ассоциации рассчитывается для номинальной и номинальной с поправкой на смещение, V Крамера, числовой и числовой с помощью корреляции Спирмена (по умолчанию) или Пирсона и номинальной и числовой с помощью дисперсионного анализа ANOVA. - @Holger Brandl

person Espen Rosenquist    schedule 30.04.2020

Вот два решения, одно base R, другое основано на dplyr:

Иллюстративные данные:

set.seed(123)
df <- data.frame(Genre = sample(c("Comedy", "Action", "Suspense", "Biography"), 10, replace = T))

Решение №1:

Вы можете присвоить числовые значения своим Genre категориям, используя ifelse:

df$Genre_numerical <- ifelse(df$Genre == "Comedy", 1,
                            ifelse(df$Genre == "Action", 2,
                                   ifelse(df$Genre == "Suspense", 3, 4)))

Решение №2:

library(dplyr)
df$Genre_numerical <- df %>% 
  mutate(Genre = case_when(Genre == "Comedy"   ~ 1,
                           Genre == "Action"   ~ 2,
                           Genre == "Suspense" ~ 3, 
                           TRUE                ~ 4))

Результат:

В любом случае результат будет одинаковым:

df
       Genre Genre_numerical
1     Action               2
2  Biography               4
3     Action               2
4  Biography               4
5  Biography               4
6     Comedy               1
7   Suspense               3
8  Biography               4
9   Suspense               3
10    Action               2
person Chris Ruehlemann    schedule 30.04.2020