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

Macro Discussion :

faire un do loop en fonction des modalités d'une variable


Sujet :

Macro

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 16
    Points : 17
    Points
    17
    Par défaut faire un do loop en fonction des modalités d'une variable
    Bonjour, je vais essayer de formuler mon problème le plus simple possible.

    Supposons que j'ai z1, z2, ..., zk variables et une variable X.
    pour chaque variable z_i je fais un proc freq avec X. (Jusque là, l'atmosphère est relax, il me suffit d'utiliser un do loop dans ma macro.) Et ceci, je dois le faire pour disons 8 tableaux. Maintenant j'aimerai générer des tableaux en fonction des modalités de la variable z_i et de la table issue du output de proc freq. Ne voulant pas faire tout ça à la main, je voudrais savoir s'il est possible de récupérer les modalités de chaque variable (sachant que ces modalités varient d'une table à une autre, je m'explique: par exemple pour la variable z1, elle peut avoir les modalités 1, 2, 3 et 4 dans la table1 et avoir comme modalité 4, 5, 9... dans la table2) dans une macro disons m et ensuite faire un %do j=1 %to m; pour générer les tableaux en fonction des modalités.
    En somme, je veux avoir l'effectif des modalités de chacune de ces variables en fonction de la variable X.
    Je colle ci-dessous mon code, en remerciant toute personne généreuse qui me permettra de sortir de cette galère.

    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
     
    %macro macro ();
    data table;
    set "table";	
    keep X z1 z2 z3 z4 z5 z6 z7 z8 z9 z10 z11;run;
     
     
    %do h=1 %to 8;
    data table&h;
    set table;
    if var=&h then output table&h;run; /* La commence la dispersion des modalités de mes variables zi*/
     
    %do i=1 %to 11;
     
    proc freq data=table&h;
    tables  X*z&i/ out=table&h&i (rename=(count=z&h&i));
    run;
     
    /*La suite générer des tables table&h&i&j (j = les différentes modalités
    de la variable z&i qui est dispersée dans les différentes tables table&h*/
     
    %end;
    %end;
    %mend macro;
    Merci d'avance !

  2. #2
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    un exemple à aménager selon tes besoins:

    DATA TABLE;
    INPUT
    z1
    z2
    x
    ;
    CARDS;
    1 2 3
    2 2 3
    3 3 3
    1 4 2
    2 5 2
    3 7 2
    1 4 2
    2 7 1
    RUN;

    /* on récupère la liste des variables pour ne pas avoir à l'écrire */
    proc contents data=table out=toto (keep=name) noprint;
    run;
    data toto;
    set toto;
    if name="x" then delete;
    run;
    data _null_;
    if 0 then set toto nobs=nombre;
    call symput('nombreobs',left(put(nombre,8.)));
    stop;
    run;
    %macro calcul;
    %do i=1 %to &nombreobs.;
    data _null_;
    set toto;
    if _n_=&i.;
    call symput("mavariable",name);
    run;
    /* on récupère le nb de modalité de la variable */
    proc freq data=table noprint;
    table &mavariable. / out=temp (keep=&mavariable.);
    run;
    data _null_;
    set temp;
    call symput("nbvar",_n_);
    run;
    %do j=1 %to &nbvar.;
    proc freq DATA=table;
    TABLE X*&mavariable. /out=freq_&j._&mavariable.;
    where &mavariable.=&j.;
    run;
    %end;
    %end;
    %mend;
    %calcul;

Discussions similaires

  1. [WRS] Ordre d'affichage des modalités d'une variable dans un tableau croisé
    Par Dr Byby'San dans le forum Outils BI
    Réponses: 6
    Dernier message: 27/04/2012, 07h39
  2. Liste des modalités d'une variable : grosse table
    Par Olive2011 dans le forum SAS Base
    Réponses: 9
    Dernier message: 30/12/2011, 14h06
  3. Réponses: 3
    Dernier message: 28/06/2011, 16h07
  4. Réponses: 2
    Dernier message: 07/04/2010, 03h35
  5. format ordre des modalités d'une variable
    Par eamoros dans le forum SAS Base
    Réponses: 2
    Dernier message: 10/02/2009, 18h25

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