Как выполнить бинирование данных в R (с примерами)


Вы можете использовать один из следующих двух методов для выполнения объединения данных в R:

Способ 1: Используйте функцию cut()

library(dplyr)

#perform binning with custom breaks
df %>% mutate(new_bin = cut(variable_name, breaks=c(0, 10, 20, 30)))

#perform binning with specific number of bins
df %>% mutate(new_bin = cut(variable_name, breaks= 3 ))

Способ 2: использовать функцию ntile()

library(dplyr)

#perform binning with specific number of bins
df %>% mutate(new_bin = ntile(variable_name, n= 3 ))

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

#create data frame
df <- data.frame(points=c(4, 4, 7, 8, 12, 13, 15, 18, 22, 23, 23, 25),
 assists=c(2, 5, 4, 7, 7, 8, 5, 4, 5, 11, 13, 8),
 rebounds=c(7, 7, 4, 6, 3, 8, 9, 9, 12, 11, 8, 9))

#view head of data frame
head(df)

 points assists rebounds
1 4 2 7
2 4 5 7
3 7 4 4
4 8 7 6
5 12 7 3
6 13 8 8

Пример 1. Выполнение бинирования данных с помощью функции cut()

В следующем коде показано, как выполнить бинирование данных для переменной points с помощью функции cut() с определенными метками разрыва:

library(dplyr)

#perform data binning on *points* variable
df %>% mutate(points_bin = cut(points, breaks=c(0, 10, 20, 30)))

 points assists rebounds points_bin
1 4 2 7 (0,10]
2 4 5 7 (0,10]
3 7 4 4 (0,10]
4 8 7 6 (0,10]
5 12 7 3 (10,20]
6 13 8 8 (10,20]
7 15 5 9 (10,20]
8 18 4 9 (10,20]
9 22 5 12 (20,30]
10 23 11 11 (20,30]
11 23 13 8 (20,30]
12 25 8 9 (20,30]

Обратите внимание, что каждая строка фрейма данных была помещена в одну из трех ячеек в зависимости от значения в столбце точек.

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

library(dplyr)

#perform data binning on *points* variable
df %>% mutate(points_bin = cut(points, breaks= 3 ))

 points assists rebounds points_bin
1 4 2 7 (3.98,11]
2 4 5 7 (3.98,11]
3 7 4 4 (3.98,11]
4 8 7 6 (3.98,11]
5 12 7 3 (11,18]
6 13 8 8 (11,18]
7 15 5 9 (11,18]
8 18 4 9 (11,18]
9 22 5 12 (18,25]
10 23 11 11 (18,25]
11 23 13 8 (18,25]
12 25 8 9 (18,25]

Пример 2. Выполнение бинирования данных с помощью функции ntile()

В следующем коде показано, как выполнить бинирование данных для переменной points с помощью функции ntile() с определенным количеством результирующих бинов:

library(dplyr)

#perform data binning on *points* variable
df %>% mutate(points_bin = ntile(points, n= 3 ))

 points assists rebounds points_bin
1 4 2 7 1
2 4 5 7 1
3 7 4 4 1
4 8 7 6 1
5 12 7 3 2
6 13 8 8 2
7 15 5 9 2
8 18 4 9 2
9 22 5 12 3
10 23 11 11 3
11 23 13 8 3
12 25 8 9 3

Обратите внимание, что каждой строке присвоен интервал от 1 до 3 в зависимости от значения столбца точек .

Лучше всего использовать функцию ntile() , когда вы хотите, чтобы в каждой строке отображалось целочисленное значение, а не интервал, показывающий диапазон корзины.

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

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

Как условно заменить значения во фрейме данных в R
Как рассчитать усеченное среднее в R
Как рассчитать условное среднее значение в R

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