Partielo | Créer ta fiche de révision en ligne rapidement
Post-Bac
1

Séance 2 R data : Création de variable

SHS

L’opérateur pipe (%>%) dans dplyr


  • outil qui permet de rendre le code plus clair.
  • Il sert à enchaîner plusieurs fonctions sans avoir à écrire du code complexe avec des parenthèses imbriquées, et sans avoir à créer des tables de données intermédiaires.

Ex : À partir de df nous voulons afficher le prénom et l’âge des hommes. Pour cela il faut filtrer ce dataframe pour obtenir uniquement les hommes et sélectionner seulement les colonnes prenom et age.


 1) On peut imbriquer les fonctions filter et select :

  • select(filter(df, sexe == "H"), prenom, age)


2) On peut aussi le faire par étape 

  • di <- filter(df, sexe == "H")
  • select(di, prenom, age)


Avec le pipe, vous pouvez écrire la même chose de façon plus claire, étape par étape et sans table intermédiaire :

  

  •  df %>%  

filter(sexe == "H") %>%

  select(prenom, age)


L’idée principale est que l’opérateur pipe (%>%) prend ce qui est à sa gauche et l’envoie en tant que premier élément de la fonction qui le suit.


Avec fonction summary () :

Pour résumer la table contenant l’âge et le sexe des hommes de plus de 30 ans, on peut procéder de la manière suivante :

  • df %>%

 filter(sexe == "M") %>%

filter(age > 30) %>%

  select(age, sexe) %>%

summary()

A retenir :

--> RACCOURCIE CLAVIER : Cmd + Shift + M

Lorsque vous écrivez vos commandes sur plusieurs lignes (ce qui est recommandé), placez le pipe en fin de ligne plutôt qu’au début de la ligne suivante

Mutate : création et modification des variables dans un dataframe


Ajouter une nouvelle colonne

Ex : Pour ajouter une colonne (l'âge dans 10 ans) à un tableau avec des âges

  • df <- df %>% 

  mutate(age_dans_10_ans = age + 10)

Créer une variable avec une condition simple : ifelse


Parfois, on a besoin de créer une nouvelle variable en fonction d’une condition. Par exemple, vous pourriez vouloir catégoriser les âges en “Senior” et “Junior”, selon que les personnes ont plus ou moins de 30 ans. Cela peut être fait en utilisant la fonction ifelse avec mutate :

Ex : df <- df %>% 

 mutate(age_cat = ifelse(age > 30, "Senior", "Junior"))

Gérer des conditions plus complexes avec case_when

Pour conditions plus complexes : case_when est plus appropriée. Par exemple, si vous voulez diviser les âges en plusieurs groupes, en tenant compte à la fois de l’âge et du sexe.


Ex : df <- df %>% 

 mutate(age_group1 = case_when(

  age < 18 ~ "Enfant",

  age >= 18 & age < 35 & sexe == "F" ~ "Jeune Femme",

  age >= 18 & age < 35 & sexe == "M" ~ "Jeune Homme",

  age >= 35 & age < 60 ~ "Adulte",

  age >= 60 ~ "Senior"

 ))


--> Ne pas oublier les virgules après chaque condition + à la ligne

~ (Option + n)


Pour s’assurer de gérer toutes les valeurs, même celles qui ne correspondent à aucune condition définie, il est possible d’ajouter la condition TRUE à la fin. Cela permet d’attribuer une valeur par défaut pour les cas qui ne vérifient aucune des conditions spécifiées.

Il faut alors rajouter par exemple : TRUE ~ "Non catégorisé" (à la fin)

Classer les données par tranches avec cut

Une autre façon de créer des groupes est d’utiliser la fonction cut, qui divise une variable numérique en plusieurs catégories en fonction de valeurs prédéfinies. 


Ex : df <- df %>%

 mutate(age_group2 = cut(age, breaks = c(0, 18, 35, 60, 110)))

-->  La fonction cut crée des tranches d’âge en fonction des intervalles définis dansbreaks. Ici, nous avons quatre tranches : (0,18] ans (0 exclu, 18 inlcus), (18,35] ans (18 exclu, 35 inlcus), (35,60] ans, et (60,110] ans

Paramètres de la fonction cut:


  • breaks : limites des intervalles. 

Par exemplebreaks = c(0, 18, 35, 60, 110) crée quatre tranches : 0-18, 18-35, 35-60, et 60-110. 

Remarque : pour faire des intervalles de largeur identique on peut utiliser la fonction seq

Par exemple, breaks = seq(10,40, by=5) crée six tranches : 10-15, 15-20, 20-25, 25-30, 30-35, et 35-40.



  • labels : un vecteur de chaînes de caractères pour nommer les classes. Permet d'étiquetées les intervalles.

Exemple : f <- df %>%

 mutate(age_group3 = cut(age, 

             breaks = c(0, 18, 35, 60, 110), 

             labels = c("Enfant", "Jeune Adulte", "Adulte", "Senior")))

--> ll doit être de la même longueur que le nombre de classes créées par breaks.



  • right : un booléen (TRUE ou FALSE) qui spécifie si les intervalles doivent être fermés à droite ou à gauche. 

--> Par défaut, il est réglé sur TRUE, ce qui signifie que les tranches incluent la valeur de droite (et excluent celle de gauche). 

En réglant ce paramètre sur FALSE, les intervalles deviennent ouvert à droite et fermé à gauche.

Exemple : df <- df %>%

 mutate(age_group4 = cut(age, 

             breaks = c(0, 18, 35, 60, 110),

             right=FALSE))


  • include.lowest : un booléen (TRUE ou FALSE) qui indique si le premier intervalle doit être fermé à gauche et inclure la valeur la plus basse des tranches . 

Par exemple : cut(age, breaks = c(0, 18, 35, 60, 110), include.lowest='TRUE'))

Cela garantit que toutes les valeurs de l’âge comprises entre 0 et 110 seront recodées.

A retenir :

Bonne pratique : créer une table ne contenant que la nouvelle variable et les variables qui ont servi à sa création.

Exemple : tab_verif <- df %>% 

select(age, sexe, age_group1)


Post-Bac
1

Séance 2 R data : Création de variable

SHS

L’opérateur pipe (%>%) dans dplyr


  • outil qui permet de rendre le code plus clair.
  • Il sert à enchaîner plusieurs fonctions sans avoir à écrire du code complexe avec des parenthèses imbriquées, et sans avoir à créer des tables de données intermédiaires.

Ex : À partir de df nous voulons afficher le prénom et l’âge des hommes. Pour cela il faut filtrer ce dataframe pour obtenir uniquement les hommes et sélectionner seulement les colonnes prenom et age.


 1) On peut imbriquer les fonctions filter et select :

  • select(filter(df, sexe == "H"), prenom, age)


2) On peut aussi le faire par étape 

  • di <- filter(df, sexe == "H")
  • select(di, prenom, age)


Avec le pipe, vous pouvez écrire la même chose de façon plus claire, étape par étape et sans table intermédiaire :

  

  •  df %>%  

filter(sexe == "H") %>%

  select(prenom, age)


L’idée principale est que l’opérateur pipe (%>%) prend ce qui est à sa gauche et l’envoie en tant que premier élément de la fonction qui le suit.


Avec fonction summary () :

Pour résumer la table contenant l’âge et le sexe des hommes de plus de 30 ans, on peut procéder de la manière suivante :

  • df %>%

 filter(sexe == "M") %>%

filter(age > 30) %>%

  select(age, sexe) %>%

summary()

A retenir :

--> RACCOURCIE CLAVIER : Cmd + Shift + M

Lorsque vous écrivez vos commandes sur plusieurs lignes (ce qui est recommandé), placez le pipe en fin de ligne plutôt qu’au début de la ligne suivante

Mutate : création et modification des variables dans un dataframe


Ajouter une nouvelle colonne

Ex : Pour ajouter une colonne (l'âge dans 10 ans) à un tableau avec des âges

  • df <- df %>% 

  mutate(age_dans_10_ans = age + 10)

Créer une variable avec une condition simple : ifelse


Parfois, on a besoin de créer une nouvelle variable en fonction d’une condition. Par exemple, vous pourriez vouloir catégoriser les âges en “Senior” et “Junior”, selon que les personnes ont plus ou moins de 30 ans. Cela peut être fait en utilisant la fonction ifelse avec mutate :

Ex : df <- df %>% 

 mutate(age_cat = ifelse(age > 30, "Senior", "Junior"))

Gérer des conditions plus complexes avec case_when

Pour conditions plus complexes : case_when est plus appropriée. Par exemple, si vous voulez diviser les âges en plusieurs groupes, en tenant compte à la fois de l’âge et du sexe.


Ex : df <- df %>% 

 mutate(age_group1 = case_when(

  age < 18 ~ "Enfant",

  age >= 18 & age < 35 & sexe == "F" ~ "Jeune Femme",

  age >= 18 & age < 35 & sexe == "M" ~ "Jeune Homme",

  age >= 35 & age < 60 ~ "Adulte",

  age >= 60 ~ "Senior"

 ))


--> Ne pas oublier les virgules après chaque condition + à la ligne

~ (Option + n)


Pour s’assurer de gérer toutes les valeurs, même celles qui ne correspondent à aucune condition définie, il est possible d’ajouter la condition TRUE à la fin. Cela permet d’attribuer une valeur par défaut pour les cas qui ne vérifient aucune des conditions spécifiées.

Il faut alors rajouter par exemple : TRUE ~ "Non catégorisé" (à la fin)

Classer les données par tranches avec cut

Une autre façon de créer des groupes est d’utiliser la fonction cut, qui divise une variable numérique en plusieurs catégories en fonction de valeurs prédéfinies. 


Ex : df <- df %>%

 mutate(age_group2 = cut(age, breaks = c(0, 18, 35, 60, 110)))

-->  La fonction cut crée des tranches d’âge en fonction des intervalles définis dansbreaks. Ici, nous avons quatre tranches : (0,18] ans (0 exclu, 18 inlcus), (18,35] ans (18 exclu, 35 inlcus), (35,60] ans, et (60,110] ans

Paramètres de la fonction cut:


  • breaks : limites des intervalles. 

Par exemplebreaks = c(0, 18, 35, 60, 110) crée quatre tranches : 0-18, 18-35, 35-60, et 60-110. 

Remarque : pour faire des intervalles de largeur identique on peut utiliser la fonction seq

Par exemple, breaks = seq(10,40, by=5) crée six tranches : 10-15, 15-20, 20-25, 25-30, 30-35, et 35-40.



  • labels : un vecteur de chaînes de caractères pour nommer les classes. Permet d'étiquetées les intervalles.

Exemple : f <- df %>%

 mutate(age_group3 = cut(age, 

             breaks = c(0, 18, 35, 60, 110), 

             labels = c("Enfant", "Jeune Adulte", "Adulte", "Senior")))

--> ll doit être de la même longueur que le nombre de classes créées par breaks.



  • right : un booléen (TRUE ou FALSE) qui spécifie si les intervalles doivent être fermés à droite ou à gauche. 

--> Par défaut, il est réglé sur TRUE, ce qui signifie que les tranches incluent la valeur de droite (et excluent celle de gauche). 

En réglant ce paramètre sur FALSE, les intervalles deviennent ouvert à droite et fermé à gauche.

Exemple : df <- df %>%

 mutate(age_group4 = cut(age, 

             breaks = c(0, 18, 35, 60, 110),

             right=FALSE))


  • include.lowest : un booléen (TRUE ou FALSE) qui indique si le premier intervalle doit être fermé à gauche et inclure la valeur la plus basse des tranches . 

Par exemple : cut(age, breaks = c(0, 18, 35, 60, 110), include.lowest='TRUE'))

Cela garantit que toutes les valeurs de l’âge comprises entre 0 et 110 seront recodées.

A retenir :

Bonne pratique : créer une table ne contenant que la nouvelle variable et les variables qui ont servi à sa création.

Exemple : tab_verif <- df %>% 

select(age, sexe, age_group1)


Retour

Actions

Actions