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 :

Transformer un tableau dans R


Sujet :

R

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 40
    Points : 35
    Points
    35
    Par défaut Transformer un tableau dans R
    Bonjour la communauté,

    Je viens vous demander de l'aide concernant la transformation d'un tableau dans R. Il s'agit d'obtenir un TCD d'un autre tableau pour que je puisse le travailler. Cela est possible sur Excel mais j'aimerai pouvoir le faire directement depuis R afin de minimiser le nombre de logiciels utilisés.

    Je m'explique, j'ai la table suivante :


    DATE CRITERE VALEUR
    18/12/2017 Facteur1 35
    18/12/2017 Facteur2 25
    19/12/2017 Facteur1 38
    19/12/2017 Facteur2 25
    20/12/2017 Facteur1 40
    21/12/2017 Facteur1 33

    Dans l'état, je ne peux exploiter cette table et je souhaite donc la transformer pour l'analyser. Je souhaite obtenir la table suivante :

    DATE Facteur1 Facteur2
    18/12/2017 35 25
    19/12/2017 38 25
    20/12/2017 40 NA
    21/12/2017 33 NA

    Il s'agit finalement seulement d'un TCD seulement je ne trouve pas de façon simple de le faire sur R.

    Je vous met le code que j'ai commencé à réaliser sur R pour que vous voyiez où j'en suis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    tableau <- data.frame(sort(DATE_CRITERE_VALEUR$DATE))
    tableau <- data.frame(tableau [! duplicated (tableau),])
    table1 <- data.frame(sort(DATE_CRITERE_VALEUR$`LIBELLE CRITERE`))
    table1 <- data.frame(table1 [! duplicated (table1),])
    table1 <- t(table1)
    table1 <- data.frame(table1, h=F)
    tableau1 <- cbind(tableau,table1)
    Pour expliquer, je crée ma colonne date en faisant un tri et en retirant les doublons, je fais ensuite de même pour mes critères puis je rassemble les deux colonnes. Je bloque sur la suite car je n'arrive pas à insérer les valeurs dans ce tableau crée en bricolant.

    Avez vous des idées sur la suite à donner s'il vous plait ?

    Ou peut être une autre façon de faire plus simple que mon bricolage ? ^^

    Merci pour votre aide.

    Bonnes fêtes.

  2. #2
    Membre éclairé
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Points : 793
    Points
    793
    Par défaut
    La fonction reshape devrait répondre à ton problème.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 40
    Points : 35
    Points
    35
    Par défaut
    Merci pour l'information, j'ai essayé le package reshape et effectivement il répond à mes besoins. J'ai néanmoins un dernier soucis. Dans mes données, certains facteurs ont des valeurs sur une journée mais pas tous et lorsque l’agrégation se fait, j'obtient des NaN sur les facteurs qui n'ont pas de valeurs sur la journée car R doit diviser par 0 pour faire la moyenne. Avez vous une idée afin de corriger ce problème s'il vous plait ?

    Je vous met le script réalisé ainsi que le rendu en image pour que vous puissiez voir où j'en suis.

    Nom : Sans titre.png
Affichages : 1714
Taille : 9,2 Ko
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    dataset <- data.frame(dataset)
     
    #Selection des données 
    df <- dplyr :: select(dataset,
                     PRODUIT,
                     DATE,
                     LIBELLE.CRITERE,
                     MOYENNE)
     
    #Sélection de la recette
    df <- subset(df, PRODUIT == "200P")
     
    #Transformation des données
    df1 <- cast(df, DATE + PRODUIT ~LIBELLE.CRITERE, fun.aggregate = mean, na.rm = TRUE)
    Cordialement,

  4. #4
    Membre éclairé
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Points : 793
    Points
    793
    Par défaut
    Pour info, la fonction subset permet de faire la sélection en une seule instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    df <- subset( dataset, PRODUIT == "200P", select=c( PRODUIT, DATE, LIBELLE.CRITERE, MOYENNE))
    Le nom des colonnes dans l'argument select ne sont pas des chaînes de caractères mais des objets qui existent dans l'environnement de dataset comme c'est le cas par exemple avec la fonction with ou le select de dplyr.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 40
    Points : 35
    Points
    35
    Par défaut
    Pour résoudre mon soucis, j'ai utilisé la ligne de code suivante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    df2 <- replace (df1, df1=="NaN",NA)
    Merci pour votre aide. Je clôture le post.

    Bonne journée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. "Transformation" tableau dans excel
    Par emax2k dans le forum Excel
    Réponses: 1
    Dernier message: 20/11/2015, 14h38
  2. Réponses: 2
    Dernier message: 04/02/2014, 17h13
  3. Réponses: 6
    Dernier message: 27/05/2008, 10h03
  4. [VB6]Passage d'un tableau dans une DLL écrite en delphi
    Par flash dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 20/09/2002, 10h15
  5. Réponses: 2
    Dernier message: 27/05/2002, 19h46

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