Faire correspondre 2 data.frame sous plusieurs conditions

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

Tomas leon
Messages : 39
Enregistré le : 09 Jan 2018, 16:12

Faire correspondre 2 data.frame sous plusieurs conditions

Messagepar Tomas leon » 13 Déc 2018, 15:35

Bonjour à tous,

J'ai une question pour vous s'il vous plaît.

J'ai 2 data.frame : le (1) événement de comptages d'oiseaux (pour 1 évènement de comptage = 1 ligne, plusieurs oiseaux de comptés = 1 nombre) et le (2) description des oiseaux comptés (1 ligne = 1 individu). Les comptages (1) comme les descriptions (2) sont localisés par un numéro de parcelle et une date. Il devrait y avoir 1 description par oiseau, cependant ce n'est pas le cas. J'aimerais savoir comment nous pourrions faire correspondre les deux data.frame, c'est à dire, avoir un data.frame dans lequel les dates & lieux du (1) correspondraient aux dates & lieux (2). Comme réduire le (1) avec les contraintes de lieux et de date du (2) et ainsi avoir un évènement pour lequel il y a forcément au moins une description.

J'ai essayé de ne pas être trop abstrait, mais ce n'est pas évident de vous proposer mes données, cela fait plusieurs dizaines de milliers de lignes pour avoir les différents cas de figure pour travailler...

Merci à tous

Mickael Canouil
Messages : 508
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: Faire correspondre 2 data.frame sous plusieurs conditions

Messagepar Mickael Canouil » 13 Déc 2018, 16:26

Bonjour,

La solution se trouve dans " ?base::merge " ou " " ?dplyr::join ".

Comment insérer des données dans un message

Cordialement,
Mickaël

Tomas leon
Messages : 39
Enregistré le : 09 Jan 2018, 16:12

Re: Faire correspondre 2 data.frame sous plusieurs conditions

Messagepar Tomas leon » 17 Déc 2018, 09:27

Bonjour à tous,

J'ai trouvé une solution qui fait le travail. Si jamais vous avez une solution plus belle (pourquoi pas en tidyverse) je suis preneur (pour la beauté du code).

Ma première étape, épurer mon fichier "détail" pour sélectionner les lignes avec des informations :

Code : Tout sélectionner


Detail_info <- Detail[!(is.na(Detail$DESCRIPTION_MALE) & is.na(Detail$DESCRIPTION_FEMELLE)), ]



Seconde étape faire "correspondre" les informations dans un 3ieme fichier.

Code : Tout sélectionner

Index <- paste(comptage[,"DATE"], as.character(comptage[,"PARCELLE"]), sep = "_")

comptage <- cbind.data.frame(comptage, Index)

Index <- paste(Detail_info[,"DATE"], as.character(Detail_info[,"PARCELLE"]), sep = "_")
Detail_info <- cbind.data.frame(Detail_info, Index)

comptage_bis <- comptage[which(comptage[,"Index"] %in% Detail_info[,"Index"]) ,]



Et donc, ici dans le "comptage_bis" j'ai les événements de comptage pour lesquels j'ai au moins 1 description d'individus.

Merci à tous


Retourner vers « Questions en cours »

Qui est en ligne

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