Comment compter des valeurs distinctes à l’aide de dplyr (avec exemples)
Vous pouvez utiliser l’une des méthodes suivantes pour compter le nombre de valeurs distinctes dans une trame de données R à l’aide de la fonction n_distinct() de dplyr :
Méthode 1 : compter les valeurs distinctes dans une colonne
n_distinct(df$column_name)
Méthode 2 : compter les valeurs distinctes dans toutes les colonnes
sapply(df, function(x) n_distinct(x))
Méthode 3 : compter les valeurs distinctes par groupe
df %>% group_by(grouping_column) %>% summarize(count_distinct = n_distinct(values_column))
Les exemples suivants montrent comment utiliser chacune de ces méthodes en pratique avec le bloc de données suivant :
library(dplyr)
#create data frame
df <- data.frame(team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
points=c(6, 6, 8, 10, 9, 9, 12, 12),
assists=c(3, 6, 4, 2, 4, 5, 5, 9))
#view data frame
df
team points assists
1 A 6 3
2 A 6 6
3 A 8 4
4 A 10 2
5 B 9 4
6 B 9 5
7 B 12 5
8 B 12 9
Méthode 1 : compter les valeurs distinctes dans une colonne
Le code suivant montre comment utiliser n_distinct() pour compter le nombre de valeurs distinctes dans la colonne ‘team’ :
#count distinct values in 'team' column
n_distinct(df$team)
[1] 2
Il y a 2 valeurs distinctes dans la colonne ‘équipe’.
Méthode 2 : compter les valeurs distinctes dans toutes les colonnes
Le code suivant montre comment utiliser les fonctions sapply() et n_distinct() pour compter le nombre de valeurs distinctes dans chaque colonne du bloc de données :
#count distinct values in every column
sapply(df, function(x) n_distinct(x))
team points assists
2 5 6
À partir du résultat, nous pouvons voir :
- Il y a 2 valeurs distinctes dans la colonne ‘équipe’
- Il y a 5 valeurs distinctes dans la colonne « points »
- Il y a 6 valeurs distinctes dans la colonne « aides »
Méthode 3 : compter les valeurs distinctes par groupe
Le code suivant montre comment utiliser la fonction n_distinct() pour compter le nombre de valeurs distinctes par groupe :
#count distinct 'points' values by 'team'
df %>%
group_by(team) %>%
summarize(distinct_points = n_distinct(points))
# A tibble: 2 x 2
team distinct_points
1 A 3
2 B 2
À partir du résultat, nous pouvons voir :
- Il existe 3 valeurs de points distinctes pour l’équipe A.
- Il existe 2 valeurs de points distinctes pour l’équipe B.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes à l’aide de dplyr :
Comment recoder des valeurs à l’aide de dplyr
Comment remplacer NA par Zero dans dplyr
Comment classer les variables par groupe à l’aide de dplyr
Comment sélectionner la première ligne par groupe à l’aide de dplyr