Comment utiliser la fonction across() dans dplyr (3 exemples)
Vous pouvez utiliser la fonction across() du package dplyr dans R pour appliquer une transformation à plusieurs colonnes.
Il existe d’innombrables façons d’utiliser cette fonction, mais les méthodes suivantes illustrent quelques utilisations courantes :
Méthode 1 : appliquer une fonction à plusieurs colonnes
#multiply values in col1 and col2 by 2 df %>% mutate(across(c(col1, col2), function(x) x*2))
Méthode 2 : calculer une statistique récapitulative pour plusieurs colonnes
#calculate mean of col1 and col2 df %>% summarise(across(c(col1, col2), mean, na.rm=TRUE))
Méthode 3 : calculer plusieurs statistiques récapitulatives pour plusieurs colonnes
#calculate mean and standard deviation for col1 and col2 df %>% summarise(across(c(col1, col2), list(mean=mean, sd=sd), na.rm=TRUE))
Les exemples suivants montrent comment utiliser chaque méthode avec le bloc de données suivant :
#create data frame df <- data.frame(conf=c('East', 'East', 'East', 'West', 'West', 'West'), points=c(22, 25, 29, 13, 22, 30), rebounds=c(12, 10, 6, 6, 8, 11)) #view data frame df conf points rebounds 1 East 22 12 2 East 25 10 3 East 29 6 4 West 13 6 5 West 22 8 6 West 30 11
Exemple 1 : appliquer une fonction à plusieurs colonnes
Le code suivant montre comment utiliser la fonction across() pour multiplier par 2 les valeurs des colonnes points et rebonds :
library(dplyr)
#multiply values in points and rebounds columns by 2
df %>%
mutate(across(c(points, rebounds), function(x) x*2))
conf points rebounds
1 East 44 24
2 East 50 20
3 East 58 12
4 West 26 12
5 West 44 16
6 West 60 22
Exemple 2 : calculer une statistique récapitulative pour plusieurs colonnes
Le code suivant montre comment utiliser la fonction across() pour calculer la valeur moyenne des colonnes de points et de rebonds :
library(dplyr) #calculate mean value of points an rebounds columns df %>% summarise(across(c(points, rebounds), mean, na.rm=TRUE)) points rebounds 1 23.5 8.833333
Notez que nous pouvons également utiliser la fonction is.numeric pour calculer automatiquement une statistique récapitulative pour toutes les colonnes numériques du bloc de données :
library(dplyr) #calculate mean value for every numeric column in data frame df %>% summarise(across(where(is.numeric), mean, na.rm=TRUE)) points rebounds 1 23.5 8.833333
Exemple 3 : Calculer plusieurs statistiques récapitulatives pour plusieurs colonnes
Le code suivant montre comment utiliser la fonction across() pour calculer la moyenne et l’écart type des colonnes de points et de rebonds :
library(dplyr) #calculate mean and standard deviation for points and rebounds columns df %>% summarise(across(c(points, rebounds), list(mean=mean, sd=sd), na.rm=TRUE)) points_mean points_sd rebounds_mean rebounds_sd 1 23.5 6.156298 8.833333 2.562551
Remarque : Vous pouvez trouver la documentation complète de la fonction across() ici .
Ressources additionnelles
Les didacticiels suivants expliquent comment exécuter d’autres fonctions courantes à l’aide de dplyr :
Comment supprimer des lignes à l’aide de dplyr
Comment organiser les lignes à l’aide de dplyr
Comment filtrer selon plusieurs conditions à l’aide de dplyr