IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Manipulation et transformation des données


Sujet :

R

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2018
    Messages : 23
    Points : 17
    Points
    17
    Par défaut Manipulation et transformation des données
    Bonjour,

    J'ai un jeu de données de la forme suivante (voir tab1 ci-joint)Nom : TAB_BUILD.PNG
Affichages : 173
Taille : 11,0 KoNom : TAB1.PNG
Affichages : 180
Taille : 13,8 Ko et je voulais construire le tableau de la forme suivante (voir l'image tab_build ci_joint). Comment peux-je s'il vous plaît faire sous R à l'aide des fonctions? Merci à vous.

    Bien cordialement.

  2. #2
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 276
    Points : 561
    Points
    561
    Par défaut
    Bonjour,

    c'est possible avec la fonction reshape mais tu peux obtenir un résultat plus propre directement avec les fonctions du package tidyr (et magrittr pour "%>%") :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    # un exemple
    tab <- 
    structure(list(CODE_IND = c("id1", "id2", "id3"), A.montant1 = c("V", 
    "V21", "V31"), A.montant2 = c("X11", "X21", "X31"), B.montant1 = c("V12", 
    "V22", "V32"), B.montant2 = c("X12", "X22", "X32"), C.montant1 = c("V13", 
    "Na", "V33"), C.montant2 = c("X13", "Na", "X33")), class = "data.frame", row.names = c(NA, 
    -3L))
     
    library(magrittr) # ou library(dplyr) qui fait appel a magrittr
    library(tidyr)
    tab %>% gather(key = "key", "value", -1) %>% 
      separate(key, c("RUBRIQUES", "Montant")) %>% 
      spread(Montant, value)
     
      CODE_IND RUBRIQUES montant1 montant2
    1      id1         A        V      X11
    2      id1         B      V12      X12
    3      id1         C      V13      X13
    4      id2         A      V21      X21
    5      id2         B      V22      X22
    6      id2         C       Na       Na
    7      id3         A      V31      X31
    8      id3         B      V32      X32
    9      id3         C      V33      X33
    cdlt

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2018
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    Merci pour votre réponse,en fait, j'ai inversé l'ordre des tableaux je suis désolé, ce que je veux c'est à partir de deuxième tableau dans la discussion (nommé tab1) construire le premier tableau (nommé tab_build) ?

  4. #4
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 276
    Points : 561
    Points
    561
    Par défaut
    re,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    tab2 <- 
    structure(list(CODE_IND = c("id1", "id1", "id1", "id2", "id2", 
    "id2", "id3", "id3", "id3"), RUBRIQUES = c("A", "B", "C", "A", 
    "B", "C", "A", "B", "C"), montant1 = c("V", "V12", "V13", "V21", 
    "V22", "Na", "V31", "V32", "V33"), montant2 = c("X11", "X12", 
    "X13", "X21", "X22", "Na", "X31", "X32", "X33")), class = "data.frame", row.names = c(NA, 
    -9L))
     
    reshape(tab2, v.names = c("montant1", "montant2"), idvar = "CODE_IND", timevar = "RUBRIQUES", direction = "wide")
    # ou 
    tab2 %>% gather("key", "value", -(1:2)) %>% 
      unite(var, c("key", "RUBRIQUES"), sep = ".") %>% 
      spread(var, value, -1)
    cdlt

Discussions similaires

  1. Transformer des données JSON en fragments HTML
    Par pitav dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/10/2012, 16h50
  2. [1.x] [sf 1.4] Transformations des données du model vers la view
    Par Cethywolf dans le forum Symfony
    Réponses: 4
    Dernier message: 02/01/2010, 23h50
  3. Comment manipuler et sauvegarder des données?
    Par jlm57 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 21/06/2009, 20h12
  4. Transformer des données en code PHP
    Par eric41 dans le forum Langage
    Réponses: 2
    Dernier message: 18/09/2008, 23h35
  5. [ETL] Migration base/transformation des données
    Par tom_92 dans le forum Alimentation
    Réponses: 3
    Dernier message: 04/03/2007, 23h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo