Power Query – Script R – Créer une table de données


Dans cet article, nous allons voir comment réaliser des opérations simples en utilisant un script R dans power query.

Pour générer une table de données nous allons devoir créer ce que se nomme un dataframe, dans le langage R.

Un dataframe est utilisé pour stocker les tables de données, elles-mêmes constituées de colonnes (ou vecteurs en R), de même longueur.

En R, la notation pour un vecteur est c().

c(1,2,3) représente donc une colonne de données dont les valeurs des lignes sont 1,2 et 3.

Pour affecter un vecteur à une variable, nous pouvons utiliser le signe = ou la notation <-.

  • x = c(1,2,3)
  • x <- c(1,2,3)

Pour afficher le résultat sous forme de table, dans Power query, nous devrons utiliser la fonction data.frame().

  • n = c(2, 3, 5)
    df = data.frame(n)

Ce qui donne dans l'éditeur de powerquery, le code suivant :

let
Source = R.Execute("df=c(2,3,5);dataset=data.frame(df)"),
dataset = Source{[Name="dataset"]}[Value]
in
dataset

 

La constitution d'une table suit la même logique :

  • a = c(3, 4, 5)
    b = c("aa", "bb", "cc")
    c = c(TRUE, FALSE, TRUE)
    df = data.frame(a, b, c)

 

Une colonne du dataframe peut aussi être le fruit d'un calcul comme :

  • a = c(3, 4, 5)
    b = c("aa", "bb", "cc")
    c = c(TRUE, FALSE, TRUE)
    d = 5+8
    e = a*d
    df = data.frame(a, b, c,d,e)

 

 

Nous pouvons stocker des informations dans des variables pour pouvoir réaliser des calculs ultérieurs :

  • x= 10
    y = 5
    result = x*y

    df = data.frame(result)

Affichera 50.

Ces variables peuvent avoir plusieurs types : 

  • Décimales :  5.5
  • Entières : 6
  • Texte : "Hello"
  • Boolean : TRUE ou FALSE

Nous pouvons teste le type de chaque variable en utilisant la fonction class() :

  • var_numerique <- 42
    var_texte <- "hello"
    var_logique <- FALSE


    a=class(var_numérique)

    b= class(var_logique)

    df = data.frame(a,b)

 

 

Transposition

Nous pouvons aisémment transposer les lignes en colonnes en utilisant la fonction t().

Cette fonction prend un dataframe en paramètre et en ressort une matrice inversée.

Comme les matrices ne sont pas gérées par PowerQuery, nous devrons utiliser à nouveau la fonction data.frame() pour afficher le résultat.

  • a = c(3, 4, 5)
    b = c("aa", "bb", "cc")
    c = c(TRUE, FALSE, TRUE)
    df = data.frame(a, b, c)

    df = data.frame(t(df))

 

 

Ajouter des lignes

Nous pouvons ajouter des lignes (l'équivalent d'ajouter des requêtes l'une à l'autre dans PowerQuery) en utilisant plusieurs dataframes comme paramètres de la fonction rbind() :

  • a = c(3, 4, 5)
    b = c("aa", "bb", "cc")
    c = c(TRUE, FALSE, TRUE)
    df = data.frame(a, b, c)

     

    a = c(6,7,8)
    b = c("dd", "dd", "ff")
    c = c(TRUE, FALSE, TRUE)
    df1 = data.frame(a, b, c)

    df2 = rbind(df,df1)

 

 

Fusionner 

La fonction merge() offre de nombreuses possibilités pour effectuer des jointures de tables.

Par exemple ici en utilisant la colonne "a" comme clé de jointure :

  • a = c(3, 4, 5)
    b = c("aa", "bb", "cc")
    c = c(TRUE, FALSE, TRUE)
    d= c("X","Y","Z")
    df = data.frame(a, b, c,d)

     

    a = c(3,4,5)
    b = c("dd", "dd", "ff")
    c = c(TRUE, FALSE, TRUE)
    df1 = data.frame(a, b, c)

    df2 = merge(df,df1, by ="a", all = TRUE)

 

Bien évidemment toutes ces opérations peuvent s'opérer sur des tables complexes chargées depuis toutes forme de source de donnée.

Intégrer R dans PowerQuery c'est bénéficier de ses très nombreuses librairies et donner encore plus de puissance à PowerBI.

Laissez un commentaire

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