Comment créer un tableau croisé à l’aide de dplyr (avec exemples)



Vous pouvez utiliser la syntaxe de base suivante pour produire un tableau croisé à l’aide des fonctions des packages dplyr et Tidyr dans R :

df %>%
  group_by(var1, var2) %>%
  tally() %>%
  spread(var1, n)

Les exemples suivants montrent comment utiliser cette syntaxe dans la pratique.

Exemple 1 : Créer un tableau croisé de base

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

#create data frame
df <- data.frame(team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 position=c('G', 'G', 'F', 'C', 'G', 'F', 'F', 'C'),
                 points=c(7, 7, 8, 11, 13, 15, 19, 13))

#view data frame
df

  team position points
1    A        G      7
2    A        G      7
3    A        F      8
4    A        C     11
5    B        G     13
6    B        F     15
7    B        F     19
8    B        C     13

Nous pouvons utiliser la syntaxe suivante pour créer un tableau croisé pour les variables « équipe » et « position » :

library(dplyr)
library(tidyr)

#produce crosstab 
df %>%
  group_by(team, position) %>%
  tally() %>%
  spread(team, n)

# A tibble: 3 x 3
  position     A     B
1 C            1     1
2 F            1     2
3 G            2     1

Voici comment interpréter les valeurs du tableau croisé :

  • Il y a 1 joueur qui occupe la position « C » et appartient à l’équipe « A »
  • Il y a 1 joueur qui occupe la position « C » et appartient à l’équipe « B »
  • Il y a 1 joueur qui occupe la position « F » et appartient à l’équipe « A »
  • Il y a 2 joueurs qui ont une position « F » et appartiennent à l’équipe « B »
  • Il y a 2 joueurs qui ont une position de « G » et appartiennent à l’équipe « A »
  • Il y a 1 joueur qui occupe la position « G » et appartient à l’équipe « B »

Notez que nous pouvons changer les lignes et les colonnes du tableau croisé en changeant la variable utilisée dans la fonction spread() :

library(dplyr)
library(tidyr)

#produce crosstab with 'position' along columns
df %>%
  group_by(team, position) %>%
  tally() %>%
  spread(position, n)

# A tibble: 2 x 4
# Groups:   team [2]
  team      C     F     G     
1 A         1     1     2
2 B         1     2     1

Connexe : Comment utiliser la fonction Spread dans Tidyr

Ressources additionnelles

Les didacticiels suivants expliquent comment exécuter d’autres fonctions courantes dans dplyr :

Comment calculer les fréquences relatives à l’aide de dplyr
Comment sélectionner des colonnes par index à l’aide de dplyr
Comment supprimer des lignes à l’aide de dplyr

Ajouter un commentaire

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