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 :

R - Supprimer doublons, selection de la ligne restante en fonction de critère


Sujet :

R

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Developpeur R-Shiny
    Inscrit en
    Février 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Developpeur R-Shiny

    Informations forums :
    Inscription : Février 2019
    Messages : 23
    Points : 32
    Points
    32
    Par défaut R - Supprimer doublons, selection de la ligne restante en fonction de critère
    Développeurs, Développeuses,

    Je rencontre un problème sur de la manipulation de données.

    Voici un extrait de data.frame :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (d <- data.frame( Prenom= rep('Jean',3),  Activite= rep('Foot',3), Lieu=rep('Marseille',3), Date=c(Sys.Date(),Sys.Date()+1,Sys.Date()+2)))
        Prenom   Activite      Lieu       Date
    1   Jean     Foot          Marseille 2019-03-13
    2   Jean     Foot          Marseille 2019-03-14
    3   Jean     Foot          Marseille 2019-03-15
    Je souhaiterais supprimer les doublons sur le prenom, Activite, Lieu mais garder la dernière date (max) de cet élément.
    J'avais bien pensé à passer par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    doublons <- which(duplicated(d[,c(1,2,3)]))
    (d1 <- d[-doublons,])
        Prenom   Activite      Lieu       Date
    1   Jean     Foot          Marseille 2019-03-13
    Qui me renvoie logiquement la première ligne et donc la première date et non la date max souhaitée.
    J'imagine que l'on pourrait manipuler le dataframe de base en faisant un tri par ordre décroissant sur la colonne en question, puis faire ces mêmes instructions, mais ce n'est surement pas le plus optimal (peut-être une option dans le which?).

    Bonne journée à tous et d'avance merci

  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
    bonjour
    avec le pacage dplyr
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d<- d %>% group_by(Prenom,Activite,Lieu) %>% filter(Date == max(Date))
    cordialement

  3. #3
    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 obtenir la dernière valeur, il suffit de donner la valeur TRUE à l'argument fromLast de duplicated :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    doublons <- which(duplicated(d[,c(1,2,3)], fromLast=TRUE))
     (d1 <- d[-doublons,])
      Prenom Activite      Lieu       Date
    3   Jean     Foot Marseille 2019-03-15

Discussions similaires

  1. Supprimer doublon sans garder de ligne
    Par welcsk dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 07/11/2016, 13h41
  2. Réponses: 2
    Dernier message: 12/07/2016, 13h01
  3. Réponses: 3
    Dernier message: 06/03/2014, 20h44
  4. supprimer doublon d'un select
    Par dodo91 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/06/2009, 14h20
  5. supprimer doublons sur 40000 lignes
    Par eillon dans le forum Excel
    Réponses: 28
    Dernier message: 25/10/2007, 13h33

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