Aller au contenu

Samedi 17 octobre 2026 Mis à jour à 17 h 04

Lire sans pub

Résoudre les énigmes PowerQuery avec R : Guide pratique

Par Sara 2 min de lecture France

Garder Discussion

Dans le domaine de l’analyse de données, PowerQuery et R sont des outils puissants qui peuvent être utilisés ensemble pour résoudre des problèmes complexes. Cet article présente deux énigmes PowerQuery et les solutions correspondantes en utilisant le langage R.

Énigme #225

Dans cette énigme, nous avons un ensemble de données organisé sous forme de tableaux. Cependant, cette structure peut rendre la recherche et l’interprétation des données difficiles. Il est souvent nécessaire de transformer ces données pour leur donner une forme plus lisible.

Chargement des bibliothèques et des données

Pour commencer, nous devons charger les bibliothèques nécessaires et les données :

library(tidyverse)
library(readxl)
path = "Power Query/PQ_Challenge_225.xlsx"
input = read_excel(path, range = "A1:D9")
test = read_excel(path, range = "F1:G12")

Transformation des données

Nous appliquons plusieurs transformations pour obtenir le format souhaité :

r1 = input %>%
    mutate(Id = consecutive_id(Group),
           `Emp ID` = as.character(`Emp ID`),
           Group = ifelse(Group == "Group A", "GroupA", Group))
r1_1 = r1 %>%
    select(Column1 = 1, Column2 = 2, ID = 5)
r1_2 = r1 %>%
    select(Column1 = 4, Column2 = 3, ID = 5)
r2 = rbind(r1_2, r1_1) %>%
    arrange(ID) %>%
    distinct() %>%
    select(-ID)

Validation

Pour valider notre transformation, nous comparons le résultat avec les données de test :

all.equal(r2, test, check.attributes = FALSE) #> [1] TRUE

Énigme #226

Cette fois, nous sommes confrontés à des données qui peuvent sembler redondantes. L’objectif est de les transformer afin d’en extraire les informations pertinentes.

Chargement des bibliothèques et des données

Comme précédemment, nous chargeons les bibliothèques et les données :

library(tidyverse)
library(readxl)
path = "Power Query/PQ_Challenge_226.xlsx"
input = read_excel(path, range = "A1:D13")
test = read_excel(path, range = "F1:I19")

Transformation des données

Voici comment les données sont transformées :

result = input %>%
    fill(`Dept ID`) %>%
    select(-`Highest Paid Employee`) %>%
    pivot_longer(-`Dept ID`, values_to = "Value") %>%
    separate(Value, into = c("Emp Names", "Salary", "Promotion Date"), sep = "-") %>%
    select(-name) %>%
    filter(!is.na(`Emp Names`)) %>%
    arrange(`Dept ID`, `Emp Names`) %>%
    mutate(`Promotion Date` = as.POSIXct(`Promotion Date`, format = "%m/%d/%Y", tz = "UTC"),
           Salary = as.numeric(Salary)) %>%
    select(`Dept ID`, `Emp Names`, `Promotion Date`, Salary)

Validation

Nous vérifions si notre résultat final est conforme aux attentes :

all.equal(result, test, check.attributes = FALSE) #> [1] TRUE

Cet article vous a-t-il aidé à comprendre ?

Connectez-vous pour donner votre avis : il aide la rédaction à savoir ce qui reste à expliquer.

Abonnement One Media

Lisez One Media sans publicité

Formule

Aucune publicité sur votre compte, votre carte de lecteur numérotée à votre nom, résiliable à tout moment.

Toutes les formules, dont l’annuel avec 2 mois offerts

Discussion

Soyez le premier à réagir. Un compte gratuit suffit ; le premier message est relu avant publication.

Se connecter Créer un compte

À lire ensuite

Toute la rubrique Tech

Explorer

Chargement des rubriques…

Votre compte

Créez un compte gratuit pour garder des articles, suivre des rubriques, retrouver votre historique et participer aux débats.

Se connecter Créer un compte