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

ODS et reporting Discussion :

GPLOT avec titre en fonction de la variable BY


Sujet :

ODS et reporting

  1. #1
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 175
    Points : 91
    Points
    91
    Par défaut GPLOT avec titre en fonction de la variable BY
    Bonjour à tous,

    Je souhaiterais savoir si avec la version 9.2 sous unix, il est possible d'afficher une variable dans le titre à partir de la variable by de la proc gplot.
    Je fais un gplot avec un by (correspondant à un code Variable_D) et je voudrais afficher son libellé dans le titre (Variable_E).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ods rtf path='/mon chemin' file="mon_fichier.rtf";
     
    title1 h=12pt "variable_E : &E.";
     
    proc gplot data=Ma_table;   
      plot  Variable_A  * Variable_B  = Variable_C ;
      by Variable_D;
     
    run;quit;
    ods rtf close;
    J'ai vu dans une autre discussion qu'on pouvait utiliser une table Annotate pour afficher les label dans un nuage de point.
    Peux-ton le faire pour un titre ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 133
    Points : 371
    Points
    371
    Par défaut
    Bonjour

    j'ai eu du mal à comprendre votre objectif mais je me dis que ce programme a des chances de faire ce que vous souhaitez...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    proc sort data=sashelp.class out=toto;
      by sex;
    run;
     
    options nobyline;
    title "pour la variable #byvar1, la modalité est #byval(sex)";
     
    proc gplot data=toto;   
      plot  height*weight=name;
      by sex;run;
    quit ;
    Cordialement

    Sébastien Ringuedé

  3. #3
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 175
    Points : 91
    Points
    91
    Par défaut
    Bonjour Sébastien,

    Merci beaucoup pour votre réponse.
    Ce programme ne fait pas exactement ce que je souhaite, car la variable affichée dans le titre est la même que celle utilisée dans le by.

    Dans votre exemple de programme la variable sex a les modalités 'F' ou 'M', et mon objectif est d'afficher dans le titre une variable plus explicite qui serait Lib_sex avec les modalités 'Female' et 'Male' pour lequel le libellé correspondrait à la variable du by (sex).

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur en SAS/ Statisticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 483
    Points : 1 552
    Points
    1 552
    Par défaut
    Bonjour,
    Une macro pourrait répondre à ta requête :
    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
     
    %macro grpby(var=);
    proc sort data=sashelp.class out=classe;  by &var ; run;
     
    proc sql noprint;
    select distinct &var
    into :mod1 - :mod99
    from classe ;
    quit;
     
    %do i=1 %to &sqlobs ;
    options nobyline;
    title "Pour la variable &var, la modalité est &&mod&i. ";
     
    proc gplot data=classe;   
    plot  height*weight=name;
    by &var; 
    run; quit ;
    %end;
    %mend grpby;        %grpby(var=sex);
    Cordialement
    Ward

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 133
    Points : 371
    Points
    371
    Par défaut
    Bonjour

    ce n'est pas un 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
     
    proc sort data=sashelp.class out=toto;
      by sex;
    run;
     
    proc format ;
    value $sex
       'M'="Homme"
       'F'="Femme";
    run;
     
    proc datasets;
    modify toto;
       format sex $sex.;
       label sex "qui donne le sexe de la personne";
    quit;
     
    options nobyline;
    title "pour la variable #byvar1, la modalité est #byval(sex)";
     
    proc gplot data=toto;   
      plot  height*weight=name;
      by sex;run;
    quit ;
    un label pour la variable, un format pour les modalités ;-)

    Cordialement

    Sébastien Ringuedé

  6. #6
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 175
    Points : 91
    Points
    91
    Par défaut
    Bonjour,

    Un grand merci à vous 2.
    Ca fonctionne !

    Je suis passer par une macro, ou j'ai extrait dans une table mes différents codes et libellés en créant une variable numéro de ligne (N), et j'ai passés le tout en macro variable avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     DATA _null_;
    SET MA_TABLE_TEMP;
    call symput ("LIB"||compress(N),trim(left(Mon_LIB))) ;
    call symput ("COD"||compress(N),trim(left(Mon_Cod)));
    RUN ;
    Ensuite avec une boucle ou i est liée à mes macro variables

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    %do i=1 %to &Nb_N ;
    options nobyline;
    title "Evolution du code " &&COD&i." &&LIB&i.";
    proc gplot data=Ma_table;
    plot Valeur * MOIS = annee ;
    by var ;
    where Mon_Cod = &&COD&i.; 
    ;run; quit;
    %end;
    Le label aurait pu être aussi une solution, mais ma variable à beaucoup de modalités et en passant par une extraction de table et un call symput, la solution me semble plus robuste.

    Bonne continuation, encore merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/04/2014, 10h40
  2. Réponses: 4
    Dernier message: 01/10/2009, 17h56
  3. Afficher titre en fonction d'une variable
    Par RENAUDER dans le forum Langage
    Réponses: 9
    Dernier message: 05/02/2009, 15h40
  4. Problemes avec une fonction a parametres variables
    Par karim&thomas dans le forum C++
    Réponses: 3
    Dernier message: 15/05/2008, 12h43
  5. Réponses: 8
    Dernier message: 13/08/2004, 12h32

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