Forum de Statistiques
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Les posteurs les plus actifs de la semaine
Aucun utilisateur

Le Deal du moment : -20%
Drone Dji DJI Mini 4K (EU)
Voir le deal
239 €

[résolu] problème avec la fonction merge fusionner 3 tables

2 participants

Aller en bas

[résolu] problème avec la fonction merge fusionner 3 tables Empty [résolu] problème avec la fonction merge fusionner 3 tables

Message par francois51 Lun 2 Déc 2013 - 15:55

Bonjour, je débute sur R, et j'ai quelques soucis... Pour l'instant, je cherche à fusionner 3 tables (extraites de l'enquête emploi de l'INSEE) en un seul objet, en utilisant la fonction merge. Sauf que R refuse, malgré mes efforts. Les tables sont correctement chargées (leurs noms sont indiv121, indiv122 et indiv123.dbf), et je voudrais les fusionner selon trois variables qui leur sont communes (IDENT, NOI et TRIM) Voici le script de ce que je fais, et ce que R renvoie:

Code:

> ##chargement du répertoire
> setwd("/home/francois/R")
> ##chargement des données
> library(foreign)
> d1 <- read.dbf("indiv121.dbf")
> d2 <- read.dbf("indiv122.dbf")
> d3 <- read.dbf("indiv123.dbf")
> ##fusion des 3 tables
> d <- merge(d1, d2, d3, by = c("IDENT","NOI","TRIM"))
Erreur dans fix.by(by.x, x) :
 'by' doit spécifier lune ou plusieurs colonnes comme des entiers, des noms ou des valeurs logiques
> ##nouvelle tentative en séparant by.x et by.y
> d <- merge(d1, d2, d3, by.x = c("IDENT","NOI","TRIM"), by.y = c("IDENT","NOI","TRIM"))
> dim(d)
[1] 422133    369
> ##résultat: les tables semblent en partie fusionnées, mais on n'obtient que 369 variables là où chaque table en fait respectivement 186, 186, et 189
> d <- merge(d1, d2, d3, by.x = c("IDENT","NOI","TRIM"), by.y = c("IDENT","NOI","TRIM"), by.z = c("IDENT","NOI","TRIM"))
> dim(d)
[1] 422133    369
> ##même résultat en ajoutant un by.z, qui manquait dans la première formule
> d <- merge(d1, d2, d3, by.x = c("IDENT","NOI","TRIM"), by.y = c("IDENT","NOI","TRIM"), by.z = c("IDENT","NOI","TRIM"), all=TRUE)
> dim(d)
[1] 422133    369
> ##même résultat avec un all=TRUE
Comme vous le voyez, tout semble bien se passer, jusqu'à la fusion des tables qui renvoie un message d'erreur que je ne comprends pas. Je tente alors de séparer le by en by.x et by.y, comme c'est proposé dans l'aide de la fonction, cette fois il semble fusionner les deux première tables (186 variables + 186 variables - les trois variables communes = 369 variables), mais pas la troisième. J'essaye alors tout bêtement d'ajouter un by.z, mais ça ne semble pas marcher. all = TRUE n'a pas d'influence non plus.

Le plus probable est que je nomme by.z ce que je devrais nommer autrement je suppose. Mais je ne trouve pas d'autre idée... Quelqu'un peut-il ou elle m'aider?

En attendant je vais tenter d'éviter l'obstacle en fusionnant d'abord les deux premières tables, puis le résultat avec la troisième... je vous tiens au courant si ça marche

merci beaucoup

François


Dernière édition par francois51 le Mer 4 Déc 2013 - 22:09, édité 1 fois

francois51

Nombre de messages : 2
Date d'inscription : 02/12/2013

Revenir en haut Aller en bas

[résolu] problème avec la fonction merge fusionner 3 tables Empty Re: [résolu] problème avec la fonction merge fusionner 3 tables

Message par droopy Mar 3 Déc 2013 - 16:03

bonjour,

c'est parce que merge ne merge que deux tableaux ensemble en même temps. Il te faudrait faire les opérations en deux temps : 1) merger d1 et d2 en un tableau d4 et 2) merger d4 à d3.

cdlt
droopy
droopy

Nombre de messages : 1156
Date d'inscription : 04/09/2009

Revenir en haut Aller en bas

[résolu] problème avec la fonction merge fusionner 3 tables Empty Re: [résolu] problème avec la fonction merge fusionner 3 tables

Message par francois51 Mer 4 Déc 2013 - 15:53

les grands esprits se rencontrent, c'est exactement ce que j'ai fait, et ça fonctionne! En revanche, je ne comprends toujours pas pourquoi je suis obligé de séparer le by en by.x et by.y, ce qui me fait réécrire 2 fois les variables... mais bon, au final ça fonctionne, donc c'est secondaire.

francois51

Nombre de messages : 2
Date d'inscription : 02/12/2013

Revenir en haut Aller en bas

[résolu] problème avec la fonction merge fusionner 3 tables Empty Re: [résolu] problème avec la fonction merge fusionner 3 tables

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum