Détecter des doublons

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Virginie Le Cras
Messages : 25
Enregistré le : 16 Mar 2016, 14:26

Détecter des doublons

Messagepar Virginie Le Cras » 04 Mai 2016, 10:29

Bonjour,

J'ai un tableau de cette forme :

Code : Tout sélectionner

ID date
A 12/10/2015
A 12/10/2015
A 13/10/2015
B 11/10/2015
B 12/10/2015
B 13/10/2015

J'aimerais savoir si j'ai deux dates identiques pour un même identifiant, et obtenir un tableau de ce genre :

Code : Tout sélectionner

ID doublon
A TRUE
B FALSE

Mais je n'y parviens pas. Une aide serait la bienvenue !

Merci.

Virginie

Vincent Guillemot
Messages : 451
Enregistré le : 05 Mai 2010, 15:11

Re: Détecter des doublons

Messagepar Vincent Guillemot » 04 Mai 2016, 11:19

Avec la fonction tapply, on peut arriver à un résultat qui est assez proche du résultat attendu :

Code : Tout sélectionner

x <- data.frame(ID = c("A", "A", "A", "B", "B", "B"),
                 date = c("12/10/2015", "12/10/2015", "13/10/2015", "11/10/2015", "12/10/2015", "13/10/2015"))
tapply(x$date, x$ID, FUN= function(x) any(duplicated(x)))


HTH,
V.

Maxime Hervé
Messages : 427
Enregistré le : 03 Mar 2010, 14:21
Contact :

Re: Détecter des doublons

Messagepar Maxime Hervé » 04 Mai 2016, 11:25

Une idée différente (cela dit je préfère celle de Vincent) :

Code : Tout sélectionner

rowSums(table(x$ID,x$date)>1)>0

Maxime

Virginie Le Cras
Messages : 25
Enregistré le : 16 Mar 2016, 14:26

Re: Détecter des doublons

Messagepar Virginie Le Cras » 04 Mai 2016, 14:58

Merci !
J'ai opté pour la méthode de Maxime, car celle de Vincent me renvoyait des NA à certains endroits, sans explication.

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Détecter des doublons

Messagepar Logez Maxime » 05 Mai 2016, 08:16

Bonjour,

une autre possibilité avec dplyr :

Code : Tout sélectionner

tab %>% group_by(ID) %>% summarise(doublon = n_distinct(date) < n() )
Source: local data frame [2 x 2]

      ID doublon
  (fctr)   (lgl)
1      A    TRUE
2      B   FALSE
Cordialement,
Maxime


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité