Fusionner plusieurs data.frame de différentes échelles

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 : 51
Enregistré le : 09 Jan 2018, 16:12

Fusionner plusieurs data.frame de différentes échelles

Messagepar Tomas leon » 06 Mar 2018, 14:43

Bonjour à tous,

J'ai une question technique pour vous s'il de plait.

J'ai plusieurs data.frame qui ont plusieurs niveaux de détail. Il s'agit de données d'observations.

Code : Tout sélectionner

datatest
correspond à 1 ligne = 1 séance d'observation = sur 1 ligne plusieurs individus peuvent être notés.

Code : Tout sélectionner

datatest2
correspond à 1 ligne = 1 individu observé

Sauf qu'il existe des séances d'observations durant lesquelles 0 individu ont été observées. Je voulais donc sélectionner les séances à 0 individus pour les fusionner avec les datatest2 :

Code : Tout sélectionner

datatest <- subset(EchelleOBS, NBPobs == 0)
datatest2 <- EchelleIndObs


La je crée des colonnes avec des variables qui n'existent pas dans datatest mais qui exsitent dans datatest2 (l'ancien POIDS représentait des valeurs cumulées) :

Code : Tout sélectionner

datatest$POIDS <- NULL
datatest$AGE <- NA
datatest$POIDS <- NA
datatest$SEXE <- NA


Ensuite je sélectionne les mêmes variables :

Code : Tout sélectionner

datatest <- datatest[, c("SAISON", "EQUIPE_NUMERO", "EQUIPE_TYPE", "EQUIPE_NBOBS", "OBS_DATE", "OBS_NUMERO", "COMMUNE_NUMERO", "COMMUNE_LIBELLE", "UNITEGESTION_CODE", "TERRITOIRE_TYPE", "NBOBS", "NBINVITE", "RESERVE", "AGE", "POIDS", "SEXE")]

datatest2 <- datatest2[, c("SAISON", "EQUIPE_NUMERO", "EQUIPE_TYPE", "EQUIPE_NBOBS", "OBS_DATE", "OBS_NUMERO", "COMMUNE_NUMERO", "COMMUNE_LIBELLE", "UNITEGESTION_CODE", "TERRITOIRE_TYPE", "NBOBS", "NBINVITE", "RESERVE", "AGE", "POIDS", "SEXE")]


Et ensuite je merge :

Code : Tout sélectionner

datatest3 <- merge(datatest, datatest2, all = T)


L'objectif ici était de rajouter les lignes avec 0 observation dans le data.frame datatest2. Première question, est ce que c'est exact de faire ça svp ?

J'ai un autre data.frame, cette fois-ci à l'échelle de la commune (1 ligne = 1 commune) qui comprend 3 variables qui m'intéresse : "COMMUNE_NUMERO", "SURFACEFAVORABLES", "COMMUNE_SURFACE_TOTALE".

J'aimerais fusionner ces informations avec mon datatest3. Y aurait-il un moyen de faire comprendre à R qu'à une commune correspond une surface & une surface favorable (déjà il faudrait tester si c'est le cas, mais je ne sais pas comment faire, peut être qu'elles changent en fonction du temps puisque j'ai plusieurs saisons), et ensuite lui demande qu'à chaque COMMUNE_NUMERO dans datatest3 il ajoute la surface & la surface favorable qui correspondent dans deux autres colonnes (et si les surfaces ne sont pas les mêmes, qu'à chaque COMMUNE_NUMERO & SAISON correspond 1 surface & 1 surface favorable). ps : (quand je merge by "COMMUNE_NUMERO" ça ne semble pas fonctionner).

Merci pour votre aide !

Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité