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

Ajouter un commentaire

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