"Clé primaire" de 2 bases

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

Couanais Pierre
Messages : 213
Enregistré le : 26 Fév 2007, 12:41

"Clé primaire" de 2 bases

Messagepar Couanais Pierre » 18 Mai 2007, 14:05

Bonjour à tous.

J'ai une petite question :

j'ai 2 grandes bases de données de la forme suivante :

A B C Identifiant
2 1 X 202
6 -3 G 603
...

Je veux regrouper les lignes de mes 2 bases qui ont un identifiant commun. Suis-je obligé de faire, pour chaque identifiant (j'ai environ 20 000 lignes par base), une boucle if ou while (ou autre) ou alors existe -t-il une autre solution qui se rapproche plus du langage base de données et des clés primaires...?


Merci d'avance

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 18 Mai 2007, 18:56

Si les deux bases sont sous un format externe (Access, MySQL,...), le plus simple est probablement d'utiliser le package RODBC pour envoyer une requête SQL (avec jointure sur les deux tables) et récupérer le data.frame correspondant.

Autrement voir la fonction merge qui est très efficace et peut traiter sans souci des pbs de cette taille.

Renaud

Couanais Pierre
Messages : 213
Enregistré le : 26 Fév 2007, 12:41

Messagepar Couanais Pierre » 22 Mai 2007, 08:34

Merci Renaud pour ta réponse... Mes bases sont sous R. Donc je vais tenter la fonction "merge".


Merci

Couanais Pierre
Messages : 213
Enregistré le : 26 Fév 2007, 12:41

Messagepar Couanais Pierre » 22 Mai 2007, 08:54

Re- Bonjour,

si j'ai bien compris "merge" est utile quand les 2 data frames ont une colonnes en commun. Ce qui n'est pas mon cas. Seules certaines valeurs de ma colonne "identifiant" sont égales mais pas toutes...

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 22 Mai 2007, 09:02

Bonjour,


Tu as quand même une colonne en commun qui est identifiant, après que ces colonnes ne partagent que certaines valeurs ce n'est pas un problème à toi de savoir ce que tu veux faire, est-ce que tu veux récupérer que l'information pour laquelle tu as des indentifiants commun (par défaut) ou est-ce que tu veux récupérer toutes l'information ? si tu veux toute l'info tu ajouetras le paramètre all=TRUE. merge(tableau1, tableau2, by="identifiant", all=TRUE ou FALSE).

Maxime

Couanais Pierre
Messages : 213
Enregistré le : 26 Fév 2007, 12:41

Messagepar Couanais Pierre » 25 Mai 2007, 14:16

OK merci à vous ça m'a pas mal aidé!!!


Retourner vers « Questions en cours »

Qui est en ligne

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