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 utiliser la fonction aggregate (ou autre fonction) pour cumuler les lignes ?


Sujet :

R

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Epitech
    Inscrit en
    Mai 2019
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Epitech

    Informations forums :
    Inscription : Mai 2019
    Messages : 33
    Points : 29
    Points
    29
    Par défaut Comment utiliser la fonction aggregate (ou autre fonction) pour cumuler les lignes ?
    Bonjour,

    Voici un exemple de data frame sur lequel je travail.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    df <- data.frame(A = c("A", "A", "B", "C", "C", "C"), B = c("X", "Y", "Z", "X", "Y", "Z"), C = c("ZZZ", "ZZZ", "ZZZ", "ZZZ", "ZZZ", "ZZZ"), D = c(1, 2, 3, 4, 5, 6))
    J'aimerais cumuler toutes les lignes en commun de la colonne A même si les données de la colonne B et C sont différentes.

    Voici le résultat attendu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    df <- data.frame(A = c("A", "B", "C"), B = c("X", "Z", "X"), C = c("ZZZ", "ZZZ", "ZZZ"), D = c(3, 3, 15))
    Et voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    df <- aggregate(. ~A+B+C, df, sum)
    Cordialement,

    Arkning

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    library(tidyverse)
    df2 <- df %>% group_by(A,C) %>% summarise(B = first(B),D = sum(D))

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Epitech
    Inscrit en
    Mai 2019
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Epitech

    Informations forums :
    Inscription : Mai 2019
    Messages : 33
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par xavier-Pierre Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    library(tidyverse)
    df2 <- df %>% group_by(A,C) %>% summarise(B = first(B),D = sum(D))
    Bonjour,

    Merci pour votre aide !

    Cordialement,

    Arkning

  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 Comment utiliser la fonction aggregate (ou autre fonction) pour cumuler les lignes ?
    Bonjour,

    Une alternative avec le package sqldf si vous connaissez le langage SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    > df <- data.frame(A = c("A", "A", "B", "C", "C", "C"), 
    +                  B = c("X", "Y", "Z", "X", "Y", "Z"), 
    +                  C = c("ZZZ", "ZZZ", "ZZZ", "ZZZ", "ZZZ", "ZZZ"), 
    +                  D = c(1, 2, 3, 4, 5, 6))
    > df
      A B   C D
    1 A X ZZZ 1
    2 A Y ZZZ 2
    3 B Z ZZZ 3
    4 C X ZZZ 4
    5 C Y ZZZ 5
    6 C Z ZZZ 6
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    > sqldf("select A, B, C, sum(D) as SommeD
    +          from df
    +          group by A")
      A B   C SommeD
    1 A Y ZZZ      3
    2 B Z ZZZ      3
    3 C Z ZZZ     15
    Cordialement,

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/04/2018, 15h20
  2. Réponses: 9
    Dernier message: 21/02/2017, 11h19
  3. Réponses: 6
    Dernier message: 09/12/2008, 09h45
  4. Réponses: 2
    Dernier message: 06/10/2008, 10h04
  5. Réponses: 8
    Dernier message: 29/06/2006, 15h37

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