• 6 heures
  • Facile

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 15/11/2023

Modifiez vos données dans R

Il est rare d’avoir des données propres ou sous une forme directement exploitable. Dans ce chapitre vous allez donc apprendre à modifier les données d’une table, mais aussi à manipuler du texte et à modifier une image !

Modifiez les données comprises dans une table

Les tableaux de données que vous avez importées dans R peuvent être sans erreur, directement dans un format exploitable ou pas…

Il faut donc pouvoir modifier les données en fonction de ses besoins.

Reprenez les données de mixité de genre dans les entreprises d’EDF, importées dans le chapitre précédent.

Ouvrez le tableau de données en cliquant dessus dans l’onglet Environment ou en utilisant le code  View(mixite_groupe_edf)  dans la console, et faites-le défiler.

Vous verrez que sur la dernière ligne, la valeur tri  est notée NA .

Sur la dernière ligne, la valeur tri est noté NA.
Sur la dernière ligne, la valeur tri est notée NA.

Afin de remplacer cette valeur manquante par 65, il faut localiser la cellule et lui indexer sa valeur. Le premier chiffre entre crochets donne la ligne, le deuxième la colonne.

mixite_groupe_edf <- read.csv2("data_raw/mixite-dans-le-groupe-edf.csv")
mixite_groupe_edf[65, 1] <- 65

Il est aussi possible d’utiliser les noms de lignes ou colonnes quand il y en a ; par exemple  mixite_groupe_edf[65, "tri"] <- 65  donne le même résultat.

Une dernière possibilité est d’utiliser le dollar $. En effet, le $ permet de descendre d’un niveau et les tableaux sont traités comme des assemblages de colonnes, donc  mixite_groupe_edf$tri[65] <- 65  donne le même résultat.

OK, c’est intéressant mais si je ne veux garder que les colonnes en français, je fais comment ?

De la même manière, vous allez pouvoir sélectionner toutes les lignes de plusieurs colonnes en ne mettant rien avant la virgule, et les colonnes d’intérêt listées après.

# avec le nom des colonnes
mixite_groupe_edf_fr <- mixite_groupe_edf[, c("tri", "annee", "perimetre_juridique", "perimetre_spatial", "indicateur", "valeur_de_l_indicateur", "unite", "methode_de_consolidation")]

# ou la position des colonnes
mixite_groupe_edf_fr <- mixite_groupe_edf[, c(1:3, 5, 7, 9, 10, 12)]

Donc si je comprends bien, pour afficher toutes les colonnes de la ligne 3 je peux faire  mixite_groupe_edf_fr[3,]  ?

Tout à fait !

Vous pouvez aussi sélectionner plusieurs lignes en utilisant la fonction c()  , comme ceci :

mixite_groupe_edf_fr[c(1:3, 6:9,11), ]

Manipulez du texte dans RStudio

Le texte travaillé ici est celui que vous avez importé depuis le site Kering Foundation. Si vous l’avez affiché au chapitre précédent, vous avez peut-être remarqué que les différents éléments de la liste sont collés bout à bout.

Pour récupérer les informations, vous utilisez le package {string}  qui permet de manipuler facilement des chaînes de caractères :

  1. Séparez les phrases les unes des autres grâce à la fonction  str_split()  et en indiquant \\. comme motif de séparation. Mettez  simplify = TRUE  pour que les phrases apparaissent séparées.

  2. Extrayez les nombres contenus dans les phrases en utilisant la fonction  str_extract()  et  [:digit:]+  comme argument du motif. La fonction  str_extract_all()  permet d’obtenir tous les contenus correspondant au motif alors que  str_extract()  s’arrête à la première occurrence.

  3. Extrayez les mots fille et garçon pour savoir le genre concerné par le pourcentage. Attention, pour éviter la sensibilité à la casse, pensez à appliquer la fonction  str_to_lower()  pour tout mettre en minuscules.

  4. Concaténez les informations avec la fonction  str_c()  , en gardant le même nombre de colonnes et de lignes. Attention, les valeurs manquantes prennent le dessus sur les autres, il faut donc les remplacer par du vide.

install.packages(stringr)
library(stringr)
stereotype_genre_chiffres_cles_phrases <-
str_split(
stereotype_genre_chiffres_cles,
"\\.",
simplify = TRUE
)

str_c(
stereotype_genre_chiffres_cles_phrases |>
str_extract(pattern = "[:digit:]+%"),
stereotype_genre_chiffres_cles_phrases |>
str_to_lower() |>
str_extract(pattern = "fille|garçon"),
sep = " "
)

# les NA prennent le dessus sur les autres, il faut donc les remplacer par rien

str_c(
stereotype_genre_chiffres_cles_phrases |>
str_extract(pattern = "[:digit:]+%") |>
str_replace_na(""),
stereotype_genre_chiffres_cles_phrases |>
str_to_lower() |>
str_extract(pattern = "fille|garçon") |>
str_replace_na(""),
sep = " "
)

Maintenant que vous avez vu qu’on pouvait manipuler le texte dans RStudio, attaquons-nous aux images.

Modifiez une image dans RStudio

Convertissez en PNG

Le logo d’OpenClassrooms que vous avez ouvert dans votre session R est un format JPEG.

Vous pouvez la convertir en PNG grâce à la fonction  image_convert()  du package  {magick}  :

install.packages("magick")
library(magick)
logo_oc <- image_read("img/logo_oc.jpeg")
logo_oc_png <- image_convert(logo_oc, format = "png")
logo_oc_png

Sélectionnez une partie de l’image

Grâce à la fonction  image_crop()  du package  {magick}  , il est possible de ne sélectionner qu’une partie de l’image en lui donnant les valeurs finales de la largeur (premier chiffre avant x) et de la hauteur (deuxième chiffre après le x).

Il faut aussi lui indiquer la position du point de départ à partir de l’angle en haut et à gauche. Si on veut commencer à un point situé à 50 pixels à gauche et 100 pixels vers le bas, il faut écrire +50+100 .

Voici comment isoler le centre du logo :  centre_logo_oc <- image_crop(logo_oc_png, "350X350+25+25")

Lisez un texte sur une image

Grâce à l’association avec le package  {tesseract}  , le package  {magick}  peut extraire du texte contenu dans une image avec la fonction  image_ocr()  .

Appliqué sur le centre du logo, nous obtenons deux p. Vous pouvez utiliser la fonction cat() pour mieux le voir.

install.packages("tesseract")
image_ocr(centre_logo_oc)
cat(image_ocr(centre_logo_oc))

Je m’attendais à trouver un “C” ou un “O”...

Oui c’est normal, l’image est à l’envers !

Pivotez une image

Pour faire pivoter une image avec le package  {magick}  , il y a plusieurs possibilités :

  • L’incliner selon un angle avec la fonction  image_rotate()  . La valeur de l’inclinaison se met avec l’argument  degrees  .

  • L’inverser verticalement avec la fonction  image_flip()  , c’est-à-dire la refléter en bas.

  • L’inverser horizontalement avec la fonction  image_flop()  , c’est-à-dire la refléter à gauche. C’est ce que nous allons utiliser sur le logo d’OpenClassrooms.

image_flop(centre_logo_oc) |>
image_ocr() |>
cat()

À vous de jouer

Contexte

Vous allez dans cette partie travailler sur les exemples montrés dans le cours. Ainsi vous allez pouvoir modifier vous-même les données contenues dans un tableau, web-scraper une page web et même lire du texte sur une image !

Consignes

Vous devez donc :

  • Modifier les données contenues dans un tableau.

  • Récupérer les informations essentielles depuis une page web.

  • Lire le texte contenu dans une image.

Corrigé

En résumé

  • R permet de manipuler plusieurs types d’objets.

  • Il est possible de modifier la nature des objets et ainsi de passer d’un texte à une table ou d'une image à un texte.

  • Pour enregistrer une manipulation, il faut l’associer à un nouveau nom.

  • La manipulation d’image est facile avec le package  {magick}  .

  • Le texte est facilement manipulable grâce au package  {stringr}  .           

Vous avez bien travaillé dans R, il vous reste à apprendre à sortir votre travail de R !

Exemple de certificat de réussite
Exemple de certificat de réussite