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 :

Fusion de colonnes et format de données


Sujet :

R

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Apprenti bioinformatique
    Inscrit en
    Mars 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Apprenti bioinformatique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2015
    Messages : 17
    Points : 35
    Points
    35
    Par défaut Fusion de colonnes et format de données
    Bonjour,

    petite question de débutant.

    Voici un exemple de données (traficotées pour l'exemple).
    Je dispose de deux dataframes. Le deuxième dispose de données permettant de compléter le 1er, mais aussi d'en ajouter quelques une.
    J'ai donc effectué un full_join (sur X) entre les deux. J'obtiens le tableau suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     	X		V1	V2
    1	D0000001	0300572	 	 	 
    2	D0000002	 	7802747
    3	D0000012	 	8402817
    4	D0000013	 	7802747
    10	D0000020	8502759	8502759
    11	D0000021	8005478	8005478
    12	D0000022	8100202	8100202
    L'idée étant de faire fusionner V1 et V2, de manière à n'avoir plus qu'une seul colonne pour cet id.
    Quand seul l'un des deux dataframes disposait de l'info, pas de soucis. Mais quand les deux l'avaient, je me retrouve avec une case avec une concaténation des deux ids (logique).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    df <- tidyr::unite(df, id, V1, V2, sep = "")  # Fusion des colonnes
     
     	X		id
    1	D0000001	0300572	 	 
    2	D0000002	7802747
    3	D0000012	8402817
    4	D0000013	7802747
    10	D0000020	85027598502759
    11	D0000021	80054788005478
    12	D0000022	81002028100202
    J'avais essayé une solution à base de sprintf un peu au hasard (et je suis pas foutu de m'en rappeler, j'ai essayé d'autres trucs en écrasant les lignes dans mon script...)
    mais en gros, tout est apparemment de la chaine de caractère dans mon dataframe (j'avais des messages d'erreurs quand j'utilisais %i avec sprintf), j'ai donc utilisé as.integer, mais forcément, ça fait un nombre beaucoup trop grand, et R me les arrondis tous à 2147483647...

    J'ai donc essayé une autre fusion avec un séparateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    df<- tidyr::unite(df, id, V1, V2, sep = ".")  # Fusion des colonnes
     
    # Ce qui me donne :
     	X		id
    1	D0000001	0300572.	 	 
    2	D0000002	.7802747
    3	D0000012	.8402817
    4	D0000013	.7802747
    10	D0000020	8502759.8502759
    11	D0000021	8005478.8005478
    12	D0000022	8100202.8100202

    De cette manière, le as.integer fonctionne, et je peux appliquer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    df$id<- sprintf("%d", df$id)
     
    # Ce qui me donne :
     	X		id
    1	D0000001	300572	 	 
    2	D0000002	0
    3	D0000012	0
    4	D0000013	0
    10	D0000020	8502759
    11	D0000021	8005478
    12	D0000022	8100202
    Les deux ids accolés sont résolus, ceux venant "de la gauche" (ligne 1) sont aussi conservé (même si il faut que je reformate pour avoir le bon nombre de chiffre, mais c'est un détail), mais en revanche, ceux venant "de la droite", étant considéré comme "après la virgule" après le as.integer, sont supprimé quand je ne conserve que la partie entière avec %d...

    Bref, je sèche un peu là.

    Si vous avez une piste, une idée, je suis preneur, merci !


    EDIT : bon, en fait df$id<- sprintf("%d", df$id) ne fait rien, c'est juste df$id <- as.integer(df$id) qui me donne ce que j'ai en dernier.
    C'était plutôt as.double qu'il fallait faire, pour pouvoir appliquer df$id<- sprintf("%d", df$id). Ce qui, de toute façon ne change rien au problème.

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Janvier 2012
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2012
    Messages : 325
    Points : 888
    Points
    888
    Par défaut
    Je ferais un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    df$id=df$V1
    df[df$id=="","id"] = df[df$id=="","V2"]

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Apprenti bioinformatique
    Inscrit en
    Mars 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Apprenti bioinformatique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2015
    Messages : 17
    Points : 35
    Points
    35
    Par défaut
    Et bien ça marche tout bien comme il faut !

    Merci beaucoup !

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

Discussions similaires

  1. [AC-2010] Format de données dans une requête appliqué à l'entête de la colonne
    Par Humanisto dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 18/08/2014, 10h43
  2. [XL-2010] Réorganisation de donnée - Fusion de colonne
    Par pixll dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 13/09/2012, 21h19
  3. Format de données en sortie d'une procédure stockée
    Par Martin Sylvie dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/02/2005, 12h02
  4. pB format de données
    Par calamity_jane dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 12/10/2004, 08h33
  5. Réponses: 4
    Dernier message: 04/12/2003, 08h12

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