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 :

Fusion tables SAS


Sujet :

SAS Base

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Fusion tables SAS
    Bonjour,

    J'ai deux tableaux de données tab1 et tab 2 définis comme suit :
    tab1
    Client Fille
    2 4
    4 7
    5 2
    tab2
    Client Garcon
    4 3
    7 8
    1 6
    4 5

    et je dois obtenir le tableau suivant :
    Client Fille Garcon
    2 4 .
    4 7 .
    5 2 .
    4 . 3
    7 . 8
    1 . 6
    4 . 5
    On remarque tab1 et tab2

    et le tableau suivant :
    Client Fille Client Garcon
    2 4 4 3
    4 7 7 8
    5 2 1 6
    . . 4 5

    Pour le 1er, je souhaite utiliser une jointure avec une proc sql mais je n'arrive pas à trouver le critère de jointure car aucune des variables X,Y et Z n'a de valeurs communes aux deux tableaux tab1 et tab2.
    J'ai tenté avec cette procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    proc sql;
    create table tab3 as
    select tab1.Client,tab2.Client,tab1.Fille
    from tab1,tab2
    full join tab2
    on tab1.Fille=tab2.Garcon;
    quit;
    Mais cela ne fonctionne pas

    Pour le 2e, je pense à une jointure également par élimination mais je ne vois pas trop comment obtenir la table souhaitée, j'ai pensé à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    proc sql;
    create table tab3bis as
    select *
    from tab1
    full join tab2
    on tab1.Fille=tab2.Client and tab1.Client=tab2.Garcon-1 and tab1.Client=tab2.Garcon-4;
    quit;
    Mais je n'ai pas pu le tester.

    Merci d'avance pour votre aide.

  2. #2
    Membre expérimenté
    Avatar de MEGAMIND2
    Homme Profil pro
    Paris
    Inscrit en
    Janvier 2011
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paris

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 029
    Points : 1 489
    Points
    1 489
    Par défaut
    Bonjour,
    Le premier cas, il suffit de faire un set:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    data tab1;
    input
    Client Fille;
    cards;
    2 4
    4 7
    5 2
    ;
    run;
     
    data tab2;
    input
    Client Garcon;
    cards;
    4 3
    7 8
    1 6
    4 5
    ;
    run;
     
    data tab3;
    set tab1 tab2;
    run;
    Le deuxième cas, tu ne peux pas avoir deux variables du même nom dans une même table. J'ai pas essayé de chercher, j’espère que tu m'en voudras pas (c'est le week end).

    Bon courage!

  3. #3
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    la solution a ton probleme 1 via une proc sql (puisque tu le demandes, mais la solution de megamind est quand meme plus simple). Tu ne peux pas faire une jointure classique vu que tu ne joins pas en colonnes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    proc sql;
    	create table TAB4 as
    	select Client, Fille, . as Garcon from TAB1
     
    	union all 
     
    	select Client, . as Fille, Garcon from TAB2
    ;
    quit;
    pour le deuxieme cas, on retombe sur une jointure classique, sauf que tu n'as pas les cles de jointure. Il faut donc les creer, et ensuite joindre la dessus.

    Il te suffit de rajouter une variable pour chacune des deux tables sources, du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    data TAB1;
    set TAB1;
    ID=_N_;
    run;
    data TAB2;
    set TAB2;
    ID=_N_;
    run;
    il ne te reste plus qu'a faire une jointure tout bete sur ID (en faisant attention tout de meme aux donnes de TAB2 qui ne sont pas dans TAB1)

Discussions similaires

  1. Import d'un fichier xml en table SAS
    Par fredrider dans le forum SAS Base
    Réponses: 3
    Dernier message: 25/11/2014, 09h34
  2. Fusion de deux tables SAS
    Par Dadakane dans le forum Débutez
    Réponses: 10
    Dernier message: 07/02/2014, 10h23
  3. Fusion de tables SAS issues de fichiers EXCEL
    Par gasikely dans le forum Débutez
    Réponses: 6
    Dernier message: 07/10/2011, 21h54
  4. Obtenir la liste des doublons dans une table SAS
    Par marie mouse dans le forum SAS Base
    Réponses: 2
    Dernier message: 05/12/2007, 15h33
  5. fusion table
    Par FRANZISKUS dans le forum Access
    Réponses: 1
    Dernier message: 15/04/2006, 13h01

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