Вы можете использовать один из следующих двух методов для выполнения объединения данных в 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