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 :
Cdiscount : -30€ dès 300€ ...
Voir le deal

Jointure avec plus de deux tables - R [ Résolu ]

Aller en bas

avec - Jointure avec plus de deux tables  - R [ Résolu ] Empty Jointure avec plus de deux tables - R [ Résolu ]

Message par Gueguett Mar 21 Fév 2012 - 11:38

Bonjour,

J'ai parcouru le forum et je n'ai pas trouvé de sujet correspondant, donc j'espère ne pas faire de doublons ..
J'ai differentes tables qui comprennent le chiffre d'affaire de mes clients, j'ai une table par mois (CA janvier 2011, CA février 2011 etc) sur plusieurs années avec pour chaque table un identifiant client.

Et je souhaiterai faire une jointure pour avoir une seule table avec les CA de tous les mois pour chaque client ayant un CA dans chaque mois. J'ai réussi à le faire en utilisant la fonction merge mais cela me fait une jointure pour seulement deux tables, j'aimerai donc savoir s'il existe un moyen de faire la jointure de toutes ces tables ?
De plus j'ai vu qu'il existait une fonction merge_all dans le package reshape mais sans résultat ...

Merci,
Gaëtan


Dernière édition par Gueguett le Ven 24 Fév 2012 - 8:27, édité 1 fois

Gueguett

Nombre de messages : 7
Age : 34
Localisation : Rennes
Date d'inscription : 21/02/2012

Revenir en haut Aller en bas

avec - Jointure avec plus de deux tables  - R [ Résolu ] Empty Re: Jointure avec plus de deux tables - R [ Résolu ]

Message par Gueguett Ven 24 Fév 2012 - 8:26

Après plusieurs tentatives j'ai fini par trouver, je poste donc la solution si cela peut servir à d'autres utlisateurs.
Il s'agit bien d'une fonction du package 'reshape' mais de la fonction 'merge_recurse'. Cependant c'est une jointure totale, voici donc le code modifié de cette fonction pour une jointure stricte (ou j'ai juste remplacé all=TRUE par all=FALSE).

Code:
jointure<-function (dfs, ...)
{
    if (length(dfs) == 2) {
        merge(dfs[[1]], dfs[[2]], all = FALSE, sort = FALSE, ...)
    }
    else {
        merge(dfs[[1]], Recall(dfs[-1]), all = FALSE, sort = FALSE,
            ...)
    }
}



Code:
data<- jointure ( list ("DF1","DF2","DF3", ...),by = "id_client" )



Gaëtan,

Gueguett

Nombre de messages : 7
Age : 34
Localisation : Rennes
Date d'inscription : 21/02/2012

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