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 :

Concaténation de table de sortie SAS


Sujet :

SAS Base

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Par défaut Concaténation de table de sortie SAS
    Bonjour, est ce quelqu'un peut m'aider ?
    j'ai plusieurs fichiers contenant plusieursvariables, j'ai du faire une macro fonction de tel sorte a l'appliquer sur chaque fichier, cette boucle contient une procedure freq qui me fait sortir des tables sas pour chaque variable de mon fichier, les sortie table sas freq contiennent les variables de longueur differente, certains ont 2 voir 3 voir 4 modallités, j'aurais souhaiter concatener ces tables en largeur !! help
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    %macro test5(fichier);
     
    data donnesN;
    set &fichier;
    keep _NUMERIC_;
    run;
     
    data cara;
    set &fichier;
    keep _CHARACTER_;
    run;
     
    data cara;
    set cara;
    if data=cara then do;
    proc contents data=cara out=Descar;
    run;
    end;
     
         else do;
             proc means data= donnesN  n nmiss min Q1 median Q3 max mean std ; 
             var _ALL_;
             output out= work.quanti; 
             run;
    		 end;
     
     
     
    %let i= _N_;
    data Descar;
    set  Descar;
    call symput(compress("nomvar"||_N_),NAME);
    varId=symget("nomvar"||left(put(_N_,4.)));
    /*call symput(compress("var"||_N_),varnum);
    vaId=symget("var"||left(put(_N_,4.)));
    run;/*;
     
     
    /*%global num;
    data _NULL_; 
    if 0 then set Descar nobs=NAME;
    call symput("num",left(put(NAME)));
    stop;
    run;/*;
     
    /*%let nomb=_N_;*/;
    /*data Des;
    set Descar;
    call symput(compress("var"||_N_,varnum);
    vaId=symget("var"||left(put(_N_,4.)));
    run;*/
    run;
    data Des;
    set  Descar;
    call symput(compress("nomvarr"||_N_),VARNUM);
    varId=symget("nomvarr"||left(put(_N_,4.)));
    run;
     
    %local num;
     
    data Des;
    if 0 then set Des nobs=VARNUM;
    call symput('num',left(put(VARNUM,8.)));
    stop;
    run;
     
     
    data cara;
    set  cara;
     
    /*data _null_;
    if 0 then set cara nobs=count;
    call symput('num',left(put(count,8.)));
    stop;
    run;*/;
     
     
    %do i=1 %to # 
     
        proc freq data=cara order=freq;
        tables &&nomvar&i/out=table&i;
    data tabl&i;
    set  table&i;
    if _N_ le 10;
    drop table&i;
    	%end;
    run;
    %mend;
    %test5(exatraitPS);

  2. #2
    Membre Expert

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Par défaut
    Bonjour,
    Dans le programme ci-dessous je crée deux tables avec des formats différentes. Je crée une table résultats (vide) avec des formats MAX.
    La macro me permet d'empiler ces tables.
    J' espère que ce programme résoudra ton problème.
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    data toto1;
    format var1 $2. var2 $2.;
    input var1 var2;
    cards;
    a1 b1
    a2 b5
    a2 b2
    a3 b1
    a3 b3
    a3 b4
    ;
    run;
    data toto2;
    format var1 $4. var2 $3.;
    input var1 var2;
    cards;
    a1 b1
    a2 b5
    a2 b2
    a3 b1
    a3 b3
    a3 b4
    ;
    run;
    proc sql; 
    create table toto0 (var1 char(5), var2 char(5));
    quit;
    %macro empiler(nb_tb);
    data res; set 
    %do i=0 %to &nb_tb;
    	toto&i
    %end;;
    run;
    %mend;
    %empiler(2);

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Par défaut
    merci BAHRAOUI,
    j'essayerai demain, j'espere que ça va marcher
    merci beaucoup

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Par défaut
    moi ce que j'ai c'est

    table 1
    "admission hopital" "frequence" "effectifs"
    deces 30 40
    mydriase 15 50

    table2
    "reanimation" "frequence" "effectifs
    debut 10 40
    milieu 27 59
    fin 30 10
    deces 29 20

    j'ai dix tables elles ont toutes un nombre de modalités different, toi le programme que tu propose, je suppose qu'il empile les de haut en bas; or moi ce que je veux c'est qu'il mette les tables en largeur, car le nombre de modalités n'est pas le même pour cahque table et donc pour chaque variable
    merci

  5. #5
    Membre Expert

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Par défaut
    Bonsoir,

    ça risque d'être un plus peu plus compliqué:
    Il faut renommer les colonnes et faire un merge au lieu du set.

    Cordialement.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Par défaut
    donc t'as compri ce que je voulais

    Admission hopital deces mydriase Reanimation debut milieu fin deces
    frequence
    effectifs

    et voila est ce que tu penses que c'est possible c'est une concatenation de chaine de caractère ?
    merci

  7. #7
    Membre Expert

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Par défaut
    il ya une transposition avant de fusionner les tables.

    Est ce que c'est possible de donner une exemple avec deux tables. Avec les différentes transformations que tu veux? Cela nous permettra de te donner très vite une solution.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 53
    Par défaut
    franchement c'est gentil a vous je débute en sas, et il faut bien trouver des solutions, mais cela me depasse:

    c'est exactement ce que je vous ai donné ci-dessus : si vous voulez les tables reelles je ne pourais les apporter que demain, j'installerai sas chez moi des demain

    table 1

    Var(COMAS) frequence effectifs
    mod debut 15 15
    fin 20 20
    hopital 30 30

    VAR =variable MOD=modalité

    table 2

    Var(ADMISSION HOPITAL) freq effectifs
    MOD ambroise paré 30 20
    salpetrire 40 30

    j'ai trente vraible par fichier et donc pour chaque variable j'ai une proc freq,
    je veux reunir toutes les variables entre elles de tel sorte a avoir

    COMA debut fin hopital ADMISSION HOPITAL ambroise paré salpetriere
    frequ 1 5 20 30
    effectif
    si cela ne suffit pas j'essayerai de joindre les tables si j'arrive car il s'agit de tables sas et donc je ne crois pas pouvoir les mettre en piece jointe

    merci encore pour vos efforts
    cordialement,
    Ameur

Discussions similaires

  1. Concaténation de tables sas
    Par cococmoi dans le forum SAS Base
    Réponses: 6
    Dernier message: 18/07/2014, 15h16
  2. concaténer des tables à 2 colonnes verticalement
    Par stefsas dans le forum SAS Base
    Réponses: 1
    Dernier message: 28/05/2008, 17h16
  3. Concaténation de tables
    Par joshua12 dans le forum Access
    Réponses: 4
    Dernier message: 04/09/2006, 20h56
  4. Réponses: 2
    Dernier message: 12/05/2006, 08h35
  5. [SQL] Concaténation de table
    Par KikiWolf59 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 01/09/2005, 18h56

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