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 :

Assembler des lignes dans un tableau


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 Assembler des lignes dans un tableau
    Bonjour,

    Je possède un tableau sur R avec plusieurs fois la même valeur dans la colonne ID_LOT. J'aimerai faire en sorte que ce tableau n'est qu'une seule valeur par ID_LOT et donc que les lignes correspondent s'assemblent pour avoir toutes les valeurs sur la même ligne. J'ai essayé la fonction reshape mais je n'ai pas réussi à mettre le code en place.

    Savez vous comment faire s'il vous plait ?

    Cordialement,

    Jonathan
    Nom : Aide R.png
Affichages : 405
Taille : 33,0 Ko

  2. #2
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Assembler des lignes dans un tableau
    Bonjour,

    Regardez ici pour un exemple d'utilisation de la fonction reshape(),

    Si vous ne réussissez pas, pouvez-vous fournir un extrait de votre fichier au format csv ? (Il faut remplacer l'extension csv par txt pour pouvoir télécharger le fichier).

    Cordialement,

  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
    Suivi_Indicateurs.txt

    Je n'ai pas réussi avec l'exemple proposé. Il y a trop de variables dans le tableau.

    J'ai mis le fichier texte en PJ.

  4. #4
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Assembler des lignes dans un tableau
    Bonjour,

    Il manque au contraire une variable pour renseigner le paramètre time=.

    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
    > df <- read.csv2("D:/temp/suivi_indicateurs.txt")
    > #On numérote les observations par groupe
    > df <- df[order(df$ID_LOT),]
    > df$obsnum <- sequence(rle(as.vector(df$ID_LOT))$lengths) 
    > str(df)
    'data.frame':   180 obs. of  11 variables:
     $ DATE_PRODUCTION: Factor w/ 2 levels "01/02/17","02/02/17": 1 1 1 1 1 1 1 1 1 1 ...
     $ ID_LOT         : Factor w/ 94 levels "032/01","032/02",..: 1 1 2 2 3 3 4 4 5 5 ...
     $ LIBELLE_RECETTE: Factor w/ 4 levels "E13","E14","E2",..: 3 3 3 3 3 3 3 3 3 3 ...
     $ Temps.de.prise : num  22.2 NA 21.5 NA 22.6 ...
     $ A.D.02h00      : num  NA NA NA NA NA 17 NA NA NA NA ...
     $ M.G.sÃ.rum     : num  3.27 NA NA NA 3.2 NA NA NA 3.29 NA ...
     $ ES_FROM_J2     : num  NA 60.7 NA 60.7 NA ...
     $ Jour           : Factor w/ 2 levels "0017-02-01","0017-02-02": 1 1 1 1 1 1 1 1 1 1 ...
     $ Semaine        : Factor w/ 1 level "0017-W05": 1 1 1 1 1 1 1 1 1 1 ...
     $ Mois           : Factor w/ 1 level "0017-02": 1 1 1 1 1 1 1 1 1 1 ...
     $ obsnum         : int  1 2 1 2 1 2 1 2 1 2 ...
    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
    25
    26
    27
    28
    29
    30
    > #On transpose les données
    > df2 <- reshape(data=df,
    +                idvar="ID_LOT",
    +                v.names=c("DATE_PRODUCTION","LIBELLE_RECETTE","Temps.de.prise",
    +                          "A.D.02h00","M.G.sÃ.rum","ES_FROM_J2","Jour","Semaine","Mois"),
    +                timevar="obsnum",
    +                direction="wide")
    > str(df2)
    'data.frame':   94 obs. of  19 variables:
     $ ID_LOT           : Factor w/ 94 levels "032/01","032/02",..: 1 2 3 4 5 6 7 8 9 10 ...
     
     $ DATE_PRODUCTION.1: Factor w/ 2 levels "01/02/17","02/02/17": 1 1 1 1 1 1 1 1 1 1 ...
     $ LIBELLE_RECETTE.1: Factor w/ 4 levels "E13","E14","E2",..: 3 3 3 3 3 3 3 3 3 3 ...
     $ Temps.de.prise.1 : num  22.2 21.5 22.6 22 21.6 ...
     $ A.D.02h00.1      : num  NA NA NA NA NA NA NA NA NA NA ...
     $ M.G.sÃ.rum.1     : num  3.27 NA 3.2 NA 3.29 NA 3.25 NA 3.18 NA ...
     $ ES_FROM_J2.1     : num  NA NA NA NA NA NA NA NA NA NA ...
     $ Jour.1           : Factor w/ 2 levels "0017-02-01","0017-02-02": 1 1 1 1 1 1 1 1 1 1 ...
     $ Semaine.1        : Factor w/ 1 level "0017-W05": 1 1 1 1 1 1 1 1 1 1 ...
     $ Mois.1           : Factor w/ 1 level "0017-02": 1 1 1 1 1 1 1 1 1 1 ...
     
     $ DATE_PRODUCTION.2: Factor w/ 2 levels "01/02/17","02/02/17": 1 1 1 1 1 1 1 1 1 1 ...
     $ LIBELLE_RECETTE.2: Factor w/ 4 levels "E13","E14","E2",..: 3 3 3 3 3 3 3 3 3 3 ...
     $ Temps.de.prise.2 : num  NA NA NA NA NA NA NA NA NA NA ...
     $ A.D.02h00.2      : num  NA NA 17 NA NA 15 NA NA NA 16 ...
     $ M.G.sÃ.rum.2     : num  NA NA NA NA NA NA NA NA NA NA ...
     $ ES_FROM_J2.2     : num  60.7 60.7 60.6 NA 60.4 ...
     $ Jour.2           : Factor w/ 2 levels "0017-02-01","0017-02-02": 1 1 1 1 1 1 1 1 1 1 ...
     $ Semaine.2        : Factor w/ 1 level "0017-W05": 1 1 1 1 1 1 1 1 1 1 ...
     $ Mois.2           : Factor w/ 1 level "0017-02": 1 1 1 1 1 1 1 1 1 1 ...
    Cordialement,

  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
    Bonjour,

    Merci pour l'explication de la variable. J'ai essayé sur mon script avec quelques colonnes en plus mais cela ne fonctionne pas.

    Je vous ai mis l'exemple dans la suite du post.

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    #Vide la RAM utilisée précédemment
    rm(list=ls())
     
    #Télécharge les packages nécessaires au script
    library(ISOweek)
    library(qcc)
    library(dplyr)
    library(ggplot2)
    library(tidyr)
    library(stringr)
     
    #######################################################################
    #Importe le fichier csv dans un tableau nommé dataset
    dataset <- read.csv2("TestCSVDeuxMois.csv", header = TRUE, as.is = T)
     
    #Conversion du tableau en tableau numérique et sélection des indicateurs de l'export GMP
    dataset <- data.frame(dataset)
    df <- select(dataset,
                 DATE_PRODUCTION,
                 ID_LOT,
                 LIBELLE_RECETTE,
                 Temps.de.prise,
                 M.G.sÃ.rum,
                 A.D.02h00,
                 ES_FROM_J2,
                 Retard.vidange.cuve,
                 Temps.d.occupation.en.cuve,
                 Temps.de.saumurage,
                 Temperature.fin.de.chauffage,
                 Temperature.de.refroidissement,
                 Temps.de.coagulation,
                 TÂ.C.d.empresurage,
                 Temps.de.Mat.primaire,
                 Tps.de.mat.secondaire,
                 MP.tank,
                 INC_0004_1_TÂ..de.Traitement)
     
    df <- df[order(df$ID_LOT),]
    df$obsnum <- sequence(rle(as.vector(df$ID_LOT))$lengths) 
    str(df)
    df2 <- reshape(data=df,idvar="ID_LOT",v.names=c("DATE_PRODUCTION","LIBELLE_RECETTE","Temps.de.prise","A.D.02h00","M.G.sÃ.rum","ES_FROM_J2","Retard.vidange.cuve","Temps.d.occupation.en.cuve","Temps.de.saumurage","Temperature.fin.de.chauffage","Temperature.de.refroidissement","Temps.de.coagulation","TÂ.C.d.empresurage","Temps.de.Mat.primaire","Tps.de.mat.secondaire","MP.tank","INC_0004_1_TÂ..de.Traitement","Jour","Semaine","Mois"),timevar="obsnum",direction="wide")
    Et voici le message erreur renvoyé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Error in `[.data.frame`(thistime, match(rval[, idvar], thistime[, idvar]),  : 
      undefined columns selected
    Cordialement,

  6. #6
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Assembler des lignes dans un tableau
    Bonjour,

    Vous appelez les variable Jour, Semaine, Mois dans la fonction reshape() alors que vous ne les avez pas sélectionnées auparavant.

    Par ailleurs, il est déconseillé de mettre des accents dans les noms de variables.

    Cordialement,

  7. #7
    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
    J'ai essayé en retirant les accents et j'obtiens le même message d'erreur.

  8. #8
    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
    J'ai réussi c'est bon. Il y avait un problème de colonnes dans mon fichier source.

    Par contre j'obitens deux colonnes par indicateur désormais au lieu de 1, est t'il possible de les rassembler pour n'avoir qu'une seule colonne s'il vous plait ?

  9. #9
    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
    J'ai juste un problème du coup j'ai désormais deux colonnes pour un indicateur alors que je souhaitais rassembler les lignes ensemble à l'origine.

    Comment faire pour que mes deux colonnes fusionnent s'il vous plait ?

  10. #10
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Assembler des lignes dans un tableau
    Je ne suis pas sûre de comprendre la question mais vous pouvez mettre la variable dans idvar= plutôt que dans v.names=. Il faudra alors utiliser idvar=c() puisque vous aurez plusieurs variables.

    Cordialement,

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

Discussions similaires

  1. ajouter des lignes dans un tableau dynamique
    Par yviii dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/06/2007, 12h15
  2. ajouter des lignes dans un tableau dynamique
    Par yviii dans le forum Windows
    Réponses: 1
    Dernier message: 20/06/2007, 11h28
  3. Régler la hauteur des lignes dans un tableau
    Par Gabout dans le forum Access
    Réponses: 4
    Dernier message: 19/02/2007, 18h11
  4. WinEdt + largeur des lignes dans un tableau
    Par Eric06 dans le forum Editeurs / Outils
    Réponses: 4
    Dernier message: 14/12/2006, 21h02
  5. [C#] Affichage des lignes dans un tableau.
    Par maldufleur dans le forum ASP.NET
    Réponses: 4
    Dernier message: 21/04/2004, 11h28

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