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 :

Problème de doublons


Sujet :

R

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 9
    Points : 10
    Points
    10
    Par défaut Problème de doublons
    Bonjour à tous,
    Je me tourne vers vous pour un problème de doublons que je rencontre.
    J'ai un tableau avec 4 variables :
    - ID
    - Date envoi
    - Date réception
    - Différence entre date réception et date envoi

    Je souhaiterai supprimer la ligne avec la date d'envoi la plus ancienne lorsque j'ai deux dates de réceptions identiques. Ou alors dit autrement, je souhaiterai supprimer la différence la plus grande.
    Et ce par ID et par date d'envoi.

    Je sais pas si j'ai été clair, mais je l'espère...


    Bonne journée à tous et merci par avance pour votre temps !

  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 Sélectionner la dernière observation par groupe
    Bonjour,

    Voici un programme pour sélectionner la dernière observation par groupe (Merci Robert A. Muenchen ; je recommande ses livres R for SAS and SPSS users et R for Stata users aux utilisateurs de ces langages).

    Je joins un fichier csv pour tester le programme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    > df <- read.csv("D:/temp/test.txt")
    > df
      ID date_envoi date_reception
    1  1 15/01/2017     01/02/2017
    2  1 01/01/2017     01/02/2017
    3  2 01/01/2017     01/02/2017
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    > df$date_envoi <- as.Date(df$date_envoi, format = "%d/%m/%Y")
    > df$date_reception <- as.Date(df$date_reception, format = "%d/%m/%Y")
    > df$delai = df$date_reception-df$date_envoi
    > df
      ID date_envoi date_reception   delai
    1  1 2017-01-15     2017-02-01 17 days
    2  1 2017-01-01     2017-02-01 31 days
    3  2 2017-01-01     2017-02-01 31 days
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    > df <- df[order(df$ID, df$date_reception, df$date_envoi),]
    > df
      ID date_envoi date_reception   delai
    2  1 2017-01-01     2017-02-01 31 days
    1  1 2017-01-15     2017-02-01 17 days
    3  2 2017-01-01     2017-02-01 31 days
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    > myBys <- data.frame(df$ID, df$date_reception)
    > myBys
      df.ID df.date_reception
    1     1        2017-02-01
    2     1        2017-02-01
    3     2        2017-02-01
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    > mylastList <- by(df, myBys, tail, n=1)
    > mylastList
    df.ID: 1
    df.date_reception: 2017-02-01
      ID date_envoi date_reception   delai
    1  1 2017-01-15     2017-02-01 17 days
    ------------------------------------------------------------ 
    df.ID: 2
    df.date_reception: 2017-02-01
      ID date_envoi date_reception   delai
    3  2 2017-01-01     2017-02-01 31 days
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    > df <- do.call(rbind, mylastList)
    > df
      ID date_envoi date_reception   delai
    1  1 2017-01-15     2017-02-01 17 days
    3  2 2017-01-01     2017-02-01 31 days
    Cordialement,
    Fichiers attachés Fichiers attachés

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Bonjour à tous, bonjour mgdondon,

    Merci beaucoup pour votre réponse ainsi que pour votre temps, votre aide résout un partie de mon problème !

    Cependant, n'ayant pas sur que nous nous soyons compris je souhaiterai vous reposer ma problématique à l'aide d'un fichier texte que je viens de construire.
    J'espère que ce fichier pourra vous aidez à y voir plus claire dans mon idée, car j'avoue à avoir beaucoup à expliciter à l'écrit mon problème...

    Bonne journée, et dores et déjà merci pour votre aide !

    test.txt

  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 Sélectionner la dernière observation par groupe
    Bonjour,

    Dans votre 1er message vous dites :

    Je souhaiterai supprimer la ligne avec la date d'envoi la plus ancienne lorsque j'ai deux dates de réceptions identiques.
    Dans votre fichier texte, c'est en effet l'inverse : vous souhaitez supprimer la ligne avec la date de réception la plus ancienne lorsque vous avez deux dates d'envoi identiques.

    Il faut donc trier votre dataframe par ID, date_envoi, date_reception et indiquer que les groupes sont définis par ID, date d'envoi : myBys <- data.frame(df$ID, df$date_envoi).

    Cordialement,

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/08/2006, 23h35
  2. [WD10] Problème de doublons
    Par routmout dans le forum WinDev
    Réponses: 5
    Dernier message: 07/06/2006, 18h36
  3. Problème de doublons
    Par RapidJul dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/05/2006, 16h08
  4. Réponses: 7
    Dernier message: 30/01/2006, 21h36
  5. [access] Problème de doublons
    Par nesbla dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/05/2005, 09h25

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