Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
[résolu] problème avec la fonction merge fusionner 3 tables
2 participants
Page 1 sur 1
[résolu] problème avec la fonction merge fusionner 3 tables
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:
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
- 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
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
Re: [résolu] problème avec la fonction merge fusionner 3 tables
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
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- Nombre de messages : 1156
Date d'inscription : 04/09/2009
Re: [résolu] problème avec la fonction merge fusionner 3 tables
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
Sujets similaires
» Jointure avec plus de deux tables - R [ Résolu ]
» Problème avec lsmeans [RÉSOLU]
» [Résolu] Problème avec boxplot
» travailler avec "list.files" en loop et utiliser merge
» Problème avec R
» Problème avec lsmeans [RÉSOLU]
» [Résolu] Problème avec boxplot
» travailler avec "list.files" en loop et utiliser merge
» Problème avec R
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum