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

Débutez Discussion :

Plusieurs fusions pour remplir une variable


Sujet :

Débutez

  1. #1
    Candidat au Club
    Femme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Plusieurs fusions pour remplir une variable
    Bonjour !

    J'essaie de vous expliquer mon problème.
    J'ai un tableau 1 avec pour chaque individu, sa catégorie sociale et sa commune.
    J'ai un tableau 2 avec pour chaque catégorie sociale, le salaire moyen qui correspond à chaque commune.
    J'aimerais obtenir un tableau 3 avec pour chaque individu, sa catégorie sociale, sa commune et le salaire moyen correspondant à la commune et à la catégorie sociale.

    Je me disais que j'allais écrire pour chaque catégorie sociale (il y en a 5) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DATA tab;
    if cat soc = cadre then
    merge tab (IN=A) cadre (IN=B); 
    BY numcom;
    IF A AND B;
    run;
    mais ca va forcément me donner un tableau avec 5 variables "salaire" avec uniquement les valeurs correspondant à l'une des cat soc.

    Comment faire pour qu'à chaque fusion sur la variable num com, la même variable salaire soit remplie ?

    J'espère que j'ai été claire...

    Merci d'avance !

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2012
    Messages : 40
    Points : 100
    Points
    100
    Par défaut
    Bonjour ,

    Vous pouvez essayer avec une proc sql (j'ai traduit vos intitulés de colonnes à partir de votre texte):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    proc sql;
    create table tab3 
    as select a.individu , a.cat_soc , a.numcom, b.salaire_moyen
    from table1 a, table2 b 
    where a.cat_soc = b.cat_soc
    and a.numcom = b.numcom ;
    quit ;
    Il faut que toutes les catégories et les communes soient présentes dans les 2 tables.
    Cordialement,

  3. #3
    Candidat au Club
    Femme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    En fait , je me suis mal expliquée...

    Le problème, c'est que je n'ai pas cat soc dans les deux tableaux. Le tableau 2 est de cette forme :


    numcom salairecadre salaireemployé salaireouvrier
    1 salcadre1
    2 salcadre2
    3 salcadre3
    4
    5

    Le tableau 1 :

    numindividu numcom cat soc
    1 2 cadre
    2 2 employé
    3 3 cadre
    4 3 ouvrier
    5 3 ouvrier
    6 4 ouvrier

    Et j'aimerais obtenir :

    numindividu numcom cat soc salaire
    1 2 cadre salcadre2
    2 2 employé
    3 3 cadre salcadre3
    4 3 ouvrier
    5 3 ouvrier
    6 4 ouvrier


    arg mes tableaux ne passent pas , comment fait-on pour faire des colonnes dans les messages ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur Pilotage
    Inscrit en
    Avril 2009
    Messages
    405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur Pilotage
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 405
    Points : 1 063
    Points
    1 063
    Par défaut
    Bjr,

    Il faut faire une jointure externe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    proc sql ;
    create table fusion as 
    select *
    from tab1 A left join tab2 B
    on A.numindividu = B.numindividu 
    and A.numcom = B.numcom ; 
    quit ;
    Plus d'info sur la jointure LEFT JOIN : "Les mots clefs LEFT, RIGHT et FULL indiquent la manière dont le moteur de requête doit effectuer la jointure externe. Il font référence à la table située à gauche (LEFT) du mot clef JOIN ou à la table située à droite (RIGHT) de ce même mot clef. Le mot FULL indique que la jointure externe est bilatérale. "


    Cdt
    I always thought that the person who specialized in using just SAS PROCS should
    be known as the SAS Proctologist.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    Mai 2011
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Attaché statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 687
    Points : 1 581
    Points
    1 581
    Par défaut
    Bonjour,

    en deux mots p.pfeiffer & lelensois16 t'ont donné la solution, après pour que ça fonctionne c'est à toi de transformer tes données (je crois que c'est le plus simple).

    C'est la deuxième table que tu dois transformer avec un code du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    Data nouv_table2;
    Set table2;
    keep num_com salaire cat_soc;
    salaire=salairecadre;cat_soc='cadre';output;
    salaire=salaireemployé;cat_soc='employé';output;
    salaire=salaireouvrier;cat_soc='ouvrier';output;
    run;
    bon courage

  6. #6
    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
    Citation Envoyé par jerome_pdv2 Voir le message
    C'est la deuxième table que tu dois transformer avec un code du genre
    ou une proc Transpose et un peu de bricolage.
    Bon courage.
    Olivier

  7. #7
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    Mai 2011
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Attaché statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 687
    Points : 1 581
    Points
    1 581
    Par défaut
    et un peu d'abstraction..., oui je n'ai pas osé sortir le coup de la proc transpose faut y aller doucement dans la section débutant.

  8. #8
    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
    Très juste Jérôme, j'avais perdu de vue dans quelle rubrique nous étions. Disons que ce sera pour plus tard, entre la ceinture verte et la marron.
    Bon courage.
    Olivier

Discussions similaires

  1. Problème pour passer une variable sur plusieurs fonctions
    Par pierre3401 dans le forum Général Python
    Réponses: 3
    Dernier message: 13/11/2013, 11h14
  2. Réponses: 16
    Dernier message: 04/10/2007, 13h06
  3. [VBA-Excel]Problème pour remplir une listview
    Par Le Djé dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/01/2006, 16h27
  4. Réponses: 3
    Dernier message: 11/11/2005, 12h59
  5. Pb pour arrondir une variable Single
    Par Celia1303 dans le forum Access
    Réponses: 2
    Dernier message: 13/10/2005, 11h39

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