Comment calculer le mode par groupe dans R (avec exemples)



Le mode d’un ensemble de données représente la valeur la plus fréquente.

Le logiciel statistique R n’a pas de fonction intégrée pour calculer le mode d’un ensemble de données, mais vous pouvez utiliser la fonction suivante pour calculer le mode :

find_mode <- function(x) {
  u <- unique(x)
  tab <- tabulate(match(x, u))
  u[tab == max(tab)]
}

Les exemples suivants montrent comment utiliser cette fonction pour calculer le mode par groupe dans R.

Exemple 1 : calculer le mode par groupe dans R (un mode)

Supposons que nous ayons le bloc de données suivant dans R qui montre les points marqués par les basketteurs de différentes équipes :

#define data frama
df <- data.frame(team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 points=c(5, 7, 7, 9, 12, 12, 10, 14))

#view data frame
df

  team points
1    A      5
2    A      7
3    A      7
4    A      9
5    B     12
6    B     12
7    B     10
8    B     14

On peut utiliser le code suivant pour calculer le mode des points , regroupés par équipe :

library(dplyr)

#define function to calculate mode
find_mode <- function(x) {
  u <- unique(x)
  tab <- tabulate(match(x, u))
  u[tab == max(tab)]
}

#calculate mode of 'points' by 'team'
df %>%
  group_by(team) %>%
  summarize(mode_points = find_mode(points))

# A tibble: 2 x 2
  team  mode_points
         
1 A               7
2 B              12

D’après les résultats, nous pouvons voir :

  • Le mode de points pour l’équipe A est 7 .
  • Le mode de points pour l’équipe B est 12 .

Exemple 2 : Calculer le mode par groupe dans R (modes multiples)

Supposons que nous ayons le bloc de données suivant dans R :

#define data frama
df <- data.frame(team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 points=c(5, 7, 7, 9, 12, 12, 10, 10))

#view data frame
df

  team points
1    A      5
2    A      7
3    A      7
4    A      9
5    B     12
6    B     12
7    B     10
8    B     10

On peut utiliser le code suivant pour calculer le mode des points , regroupés par équipe :

library(dplyr)

#define function to calculate mode
find_mode <- function(x) {
  u <- unique(x)
  tab <- tabulate(match(x, u))
  u[tab == max(tab)]
}

#calculate mode of 'points' by 'team'
df %>%
  group_by(team) %>%
  summarize(mode_points = find_mode(points))

# A tibble: 3 x 2
# Groups:   team [2]
  team  mode_points
         
1 A               7
2 B              12
3 B              10

D’après les résultats, nous pouvons voir :

  • Le mode de points pour l’équipe A est 7 .
  • Le mode de points pour l’équipe B est 12 et 10 .

Dans cet exemple, deux valeurs de points se produisaient le plus fréquemment pour l’équipe B. Chacune de ces valeurs de mode est donc renvoyée sur une ligne distincte pour l’équipe B dans la sortie.

Ressources additionnelles

Les didacticiels suivants expliquent comment calculer d’autres statistiques descriptives dans R :

Comment calculer le résumé de cinq nombres dans R
Comment créer des tableaux récapitulatifs dans R
Comment utiliser la fonction Mean() dans R

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *