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 :

Comment grouper par lignes quand une colonne a la même valeur ?


Sujet :

R

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 61
    Points : 30
    Points
    30
    Par défaut Comment grouper par lignes quand une colonne a la même valeur ?
    Bonjour à tous,

    J'ai les données suivantes :

    Nom : Capture.PNG
Affichages : 1662
Taille : 109,8 Ko

    Il faudrait que je réunisse les différents segments des virus segmentés en une seule ligne par virus en faisant la somme de leur taille, la moyenne pondérée de leur GC %, etc...
    Pour ce qui est des données de type string, soit j'ajoute les données dans une seule case si les données sont différentes entre les lignes
    Soit elles sont identiques et dans ce cas je met simplement les données normalement

    Par exemple les lignes 1 8 et 14 ont les mêmes noms, donc il faudrait que j'obtienne à la fin :


    Locus

    NC_003299,NC_003300,NC_003301
    (les données sont différentes donc j'accumule)


    Name

    Pseudomonas phage phi8
    (données identiques donc pas besoin d'ajouter)


    Length

    14984
    (7051+4741+3192)

    ect...


    Voilà, j'espère avoir été assez compréhensible...

    Merci d'avance !

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 476
    Points : 831
    Points
    831
    Par défaut
    bonsoir, le code suivant regroupe les enregistrements suivant Name,les colonnes numériques sont sommées , les colonnes caractères sont concaténées

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ## soit df ton dataframe
    library(tidyverse)
    resultat <- df %>% group_by(Name) %>% 
      summarise_all(funs(if(is.numeric(.))sum(.) else str_c(unique(.),collapse="_")))
    cdlt

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 61
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par xavier-Pierre Voir le message
    bonsoir, le code suivant regroupe les enregistrements suivant Name,les colonnes numériques sont sommées , les colonnes caractères sont concaténées

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ## soit df ton dataframe
    library(tidyverse)
    resultat <- df %>% group_by(Name) %>% 
      summarise_all(funs(if(is.numeric(.))sum(.) else str_c(unique(.),collapse="_")))
    cdlt
    Merci beaucoup pour cette réponse !

    Juste un petit détail, pour la colonne 'GC', il faudrait que je fasse une moyenne (et non la somme) des valeurs numériques pour les virus de même nom.
    Comment ajouter cela ?

    Merci encore !

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 476
    Points : 831
    Points
    831
    Par défaut
    à tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ## soit df ton dataframe
    library(tidyverse)
    resultat <- df %>% group_by(Name) %>% 
      summarise_all(funs(if(. == GC) mean(.) else if(is.numeric(.)) sum(.) else str_c(unique(.),collapse="_")))

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 61
    Points : 30
    Points
    30
    Par défaut
    Cela fonctionne, merci beaucoup !

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/09/2018, 15h23
  2. Réponses: 1
    Dernier message: 08/06/2018, 17h00
  3. [MySQL] Comment filtrer les requetes dont une colonne a la meme valeur
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/08/2013, 14h13
  4. Réponses: 2
    Dernier message: 06/07/2004, 17h46

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