Как создать категориальную переменную из Continuous в R


Вы можете использовать функцию cut() в R для создания категориальной переменной из непрерывной.

Эта функция использует следующий базовый синтаксис:

df$cat_variable <- cut(df$continuous_variable,
 breaks=c(5, 10, 15, 20, 25),
 labels=c('A', 'B', 'C', 'D'))

Обратите внимание, что breaks задает значения для разделения непрерывной переменной, а labels задает метку, присваиваемую значениям новой категориальной переменной.

В следующем примере показано, как использовать этот синтаксис на практике.

Пример: создание категориальной переменной из Continuous в R

Предположим, у нас есть следующий фрейм данных в R:

#create data frame
df <- data.frame(team=c('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'),
 points=c(78, 82, 86, 94, 99, 104, 109, 110))

#view data frame
df

 team points
1 A 78
2 B 82
3 C 86
4 D 94
5 E 99
6 F 104
7 G 109
8 H 110

В настоящее время баллы являются непрерывной переменной.

Мы можем использовать функцию cut() , чтобы разрезать его на категориальную переменную:

#add new column that cuts 'points' into categories
df$cat <- cut(df$points,
 breaks=c(70, 80, 90, 100, 110),
 labels=c('Bad', 'OK', 'Good', 'Great'))

#view updated data frame
df

 team points cat
1 A 78 Bad
2 B 82 OK
3 C 86 OK
4 D 94 Good
5 E 99 Good
6 F 104 Great
7 G 109 Great
8 H 110 Great

Мы создали новую категориальную переменную с именем cat , которая классифицирует каждую команду во фрейме данных как «плохая», «нормальная», «хорошая» или «отличная» в зависимости от их баллов .

Мы можем использовать функцию class() для проверки класса этой новой переменной:

#check class of 'cat' column
class(df$cat)

[1] "factor"

Мы видим, что переменная cat является фактором.

Мы также можем использовать функцию table() для подсчета вхождений каждой категории в переменной cat :

#count occurrences of each category in 'cat' variable
table(df$cat)
 Bad OK Good Great 
 1 2 2 3 

Обратите внимание, что если вы не предоставите аргумент labels для функции cut() , R просто будет использовать диапазон значений интервала в качестве меток:

#add new column that cuts 'points' into categories
df$cat <- cut(df$points, breaks=c(70, 80, 90, 100, 110))

#view updated data frame
df

 team points cat
1 A 78 (70,80]
2 B 82 (80,90]
3 C 86 (80,90]
4 D 94 (90,100]
5 E 99 (90,100]
6 F 104 (100,110]
7 G 109 (100,110]
8 H 110 (100,110]

В некоторых случаях вы можете предпочесть это использованию пользовательских меток.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в R:

Как преобразовать категориальные переменные в числовые в R
Как создать категориальные переменные в R
Как отображать категориальные данные в R

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.