IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAS Base Discussion :

Fusionner deux tables n'ayant pas (ou peu) de variables communes


Sujet :

SAS Base

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 20
    Points : 6
    Points
    6
    Par défaut Fusionner deux tables n'ayant pas (ou peu) de variables communes
    Bonjour,

    Je fais face à un problème totalement nouveau pour moi, dont voici l'explication (j'espère être aussi clair que possible, les tables auxquelles je fais référence sont jointes à la fin). Pour ceux qui connaitraient, il s'agit de la base SAE 2006 de la DREES. J'ai ici extrait les données relatives à un hôpital (pris au pif, et c'est un hopital public), et je m'intéresse pour l'exemple à deux tables concernant le personnel de l'hôpital:

    - Q20A c'est le personnel médical. "FI" représente le code FINESS, on a autant d'observations que de types d'emplois (PERSO), et pour chaque emploi on a le nombre de postes à temps plein (PUTPL), temps partiel (PUTPA) et le cumul des deux (PUTPP). Le code FINESS est le même pour toutes les observations vu que ça concerne un seul et même hôpital.

    - Q23A c'est la suite du personnel médical, à savoir les sages femmes et les personnels non médicaux, avec toujours la variable PERSO, et le code FINESS. C'est un prolongement de la table Q20A en fait... là où ça se complique, c'est que les variables ne sont plus les mêmes. Ici plus de PUTPL PUTPA et autres, on a des variables d'ETP moyen mensuel rémunéré, selon si les employés sont titulaires (_TITU), non titulaires (NTIT) ou remplaçants (REMP).

    Et moi ce que j'essaie de faire, c'est donc une table qui serait la fusion de Q20A et Q23A, sachant que les deux tables n'ont quasiment aucune variable commune. La proc merge de SAS ne me donne pas ce que je veux, car elle fait correspondre les variables de Q20A aux observations de Q23A. Par exemple il m'associe des totaux temps plein de médecins à des sages femmes... si j'essaie de fusionner avec l'instruction "by FINESS" c'est encore pire, vu qu'arrivé à la dernière observation de Q20A (la neuvième), il réplique les valeurs des variables... Bon enfin tout ça n'est pas très clair, je vous joins donc aussi les diverses tables obtenues en fusionnant.

    Ce que je voudrais, c'est une table qui ait l'allure du fichier Excel que j'appelle test. Quelqu'un a une idée du code pour ça ? Sachant que là ce n'est donc que pour un hôpital et deux tables . Faudrait ensuite que ce soit extensible pour fusionner 5 tables différentes (et n'ayant toujours, a priori, pas ou peu de variables communes) contenant chacune environ 4000 hostos, et dont le nombre d'observations varie (comme dans l'exemple en fait: pour les médecins on a que 9 observations, pour les sage-femmes on en a bien plus que ça)

    Pour info, je dispose de la base sous SAS mais aussi sous Access. Ne sachant pas utiliser Access pour l'instant je me suis dirigé instinctivement vers SAS, mais c'est peut-être pas le plus simple, après tout.

    Merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    deuxième post pour la base manquante, vu qu'on ne peut joindre que 5 fichiers...
    Fichiers attachés Fichiers attachés

  3. #3
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Bonjour.
    Il semblerait qu'un simple SET (au lieu d'un MERGE) des deux tables, suivi d'une proc SORT pour réordonner par FINESS puis par PERSO, corresponde au résultat souhaité.
    En revanche, je ne vois absolument pas ce qu'on peut faire comme manipulations sur le genre de table que vous souhaitez en sortie. J'ai l'impression que c'est bien plus compliqué de la manipuler (il faudra en permanence des WHERE, jongler avec les valeurs manquantes, le moindre comptage sera susceptible de se trouver plombé de doublons...) que de prendre les tables séparément. Mais probablement est-ce parce que je ne vois pas bien ce que vous avez besoin de produire au final.

    Olivier

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/04/2015, 12h53
  2. fusionner deux tables ?
    Par clov dans le forum Modélisation
    Réponses: 4
    Dernier message: 18/07/2007, 19h24
  3. Fusionner deux tables access
    Par lifemaker2025 dans le forum Access
    Réponses: 4
    Dernier message: 20/02/2007, 15h44
  4. Fusionner deux tables
    Par rdjema dans le forum Langage SQL
    Réponses: 5
    Dernier message: 30/11/2005, 18h42
  5. comment associer 3 tables n'ayant pas de champs communs ?
    Par bertrand_declerck dans le forum Langage SQL
    Réponses: 10
    Dernier message: 07/09/2005, 12h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo