Matcher des individus issus de 2 tables SAS

Fermé
Natachaaaa - 28 juin 2009 à 03:41
 Natachaaa - 23 juil. 2009 à 17:36
Bonjour,
J'ai deux tables SAS avec entre autre et en commun les colonnes nom - prénom - adresse - numéro de téléphone. La 1ére table contient des données d'une entreprise et la 2éme table contient des données d'un club d'équitation. Il s'avère que certains individus sont aussi bien présents dans les deux tables et je veux les identifier. Comment faire pour les identifier?
A noter que chaque table a sa propre clé primaire qui n'est pas présente dans l'autre table.

Merci beaucoup pour votre aide.

Natacha
A voir également:

1 réponse

Utilisateur anonyme
28 juin 2009 à 11:31
Bonjour,

Si on peut utiliser SQL sous SAS ça peut être simple (je ne connais pas SAS). En tout cas, il existe un blog sur SAS créé par une consultante : http://www.sasreference.com Peut-être peux-tu y trouver quelque chose.
0
Merci Framétaux,

Je vais voir si je peux trouver les réponses sur le blog.

Bonne journée
0
véronique > Natachaaaa
18 juil. 2009 à 13:50
Bonjour,

Vous avez le MERGE dans une étape data avec l'option IN= et l'usage d'une condition.

Ne garder que les 4 variables dont vous avez besoin.

Si vous avez des doublons dans les deux bases, enlevez-les avec un PROC SORT par exemple.

proc sort data=entreprise (keep=nom prenom adresse tel) out=entreprise nodupkey;
   by nom prenom adresse tel;
run;

proc sort data=club (keep=nom prenom adresse tel) out=club nodupkey;
   by nom prenom adresse tel;
run;

data nom_commun;
   merge entreprise (in=entrep)
             club (in=club);
   by nom prenom adresse tel;
   if entrep and club;
run;

proc print data=nom_commun noobs width=min;
run;


SAS a repris le langage SQL avec quelques variantes. Il faut utiliser la procédure PROC SQL.

proc sql;
   select distinct a.nom, a.prenom, a.adresse, a.tel
       from entreprise as a, club as b
   where a.nom=b.nom and
         a.prenom=b.prenom and
         a.adresse=b.adresse and
         a.tel=b.tel;
quit;


ou

proc sql;
    select distinct a.nom, a.prenom, a.adresse, a.tel
       from entreprise as a
   inner join
       club as b
   on  a.nom=b.nom and
       a.prenom=b.prenom and
       a.adresse=b.adresse and
       a.tel=b.tel;
quit;


Avant, je vous conseille quand même de vérifier si vous pouvez n'avez pas de doublons dus à la case du texte. Mettez par exemple tout votre texte en majuscule avec la fonction UPCASE.

Vous pouvez aussi vérifier si vous pouvez vous contenter des noms et prénoms pour faire la comparaison en identifiant tous les noms identiques. Dans le code ci-dessous, vous listez les noms, prénoms qui apparaissent plus d'une fois dans la table entreprise.

proc sql;
   select  nom, prenom, adresse, tel
   from entreprise
   group by upcase(nom), upcase(prenom)
   having count(*) gt  1
   order by nom, prenom;
quit;


Cordialement,

Véronique du blog www.sasreference.fr
Forum: http://www.facebook.com/board.php?uid=62742793112
0
Natachaaa > véronique
23 juil. 2009 à 17:36
Merci Véronique.
0