Comment effectuer un regroupement de données dans R : avec des exemples
Vous pouvez utiliser l’une des deux méthodes suivantes pour effectuer un regroupement de données dans R :
Méthode 1 : utiliser la fonction 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))
Méthode 2 : utiliser la fonction ntile()
library(dplyr) #perform binning with specific number of bins df %>% mutate(new_bin = ntile(variable_name, n=3))
Les exemples suivants montrent comment utiliser chaque méthode en pratique avec le bloc de données suivant :
#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
Exemple 1 : effectuer un regroupement de données avec la fonction cut()
Le code suivant montre comment effectuer un regroupement de données sur la variable points à l’aide de la fonction cut() avec des marques de rupture spécifiques :
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]
Notez que chaque ligne du bloc de données a été placée dans l’un des trois groupes en fonction de la valeur de la colonne de points.
Nous pourrions également spécifier le nombre de sauts à utiliser pour créer des cases de largeur égale allant de la valeur minimale à la valeur maximale de la colonne de points :
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]
Exemple 2 : effectuer un regroupement de données avec la fonction ntile()
Le code suivant montre comment effectuer un regroupement de données sur la variable points à l’aide de la fonction ntile() avec un nombre spécifique de groupes résultants :
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
Notez que chaque ligne s’est vu attribuer une case de 1 à 3 en fonction de la valeur de la colonne de points .
Il est préférable d’utiliser la fonction ntile() lorsque vous souhaitez qu’une valeur entière soit affichée dans chaque ligne plutôt qu’un intervalle indiquant la plage du bac.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans R :
Comment remplacer conditionnellement les valeurs dans le bloc de données dans R
Comment calculer une moyenne tronquée dans R
Comment calculer la moyenne conditionnelle dans R