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 :

Comment présenter les sous-groupes côte à côte et pas l'un au-dessus de l'autre ? [GRAPH]


Sujet :

ODS et reporting

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 22
    Points : 25
    Points
    25
    Par défaut Comment présenter les sous-groupes côte à côte et pas l'un au-dessus de l'autre ?
    Bonjour,

    j'aimerais présenter la distribution de fréquence des taux (variable iadjrt) , en mettant la Région (regioj) en sous)groupe, mais en disposant les sous-groupes l"un à côté de l'autre quand il y a plusieurs sous-groupes pour une même valeur (ce qui est le cas pour les midpoints 400, 460 500).

    Voici mon code et les données. j'ai essayé de mettre la région juste après vbar comme ils le disent dans le sas support, mais celà ne donne pas le résultat escompté.

    Merci pour votre aide ! Françoise

    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
     
    PROC IMPORT OUT= WORK.RATE_ARR 
                DATAFILE= "C:\brouillons\rates.txt" 
                DBMS=TAB REPLACE;
         GETNAMES=YES;
         DATAROW=2; 
    RUN;
     
     
     
    goptions reset=all cpattern=black;
    pattern1 v=r2;
    pattern2 v=l5;
    pattern3 v=s;
    proc format; value regioj 1="Region A" 2="Region B" 3="Region C";run;
     
    proc gchart data=rate_arr;
    vbar iadjrt /midpoints=300 to 680 by 20 subgroup=regioj ;
    format regioj regioj.;
    run;
    Fichiers attachés Fichiers attachés

  2. #2
    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 : 46
    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
    Bonjour Françoise.
    Dans ce cas, l'option est GROUP et non SUBGROUP. Mais dans ce cas, c'est ta variable IADJRT qui sera la variable de groupe, et REGIOJ qui sera la variable de VBAR. Ce qui suppose que tu aies déjà découpé IADJRT en tranches (avec un format par exemple) car tu ne peux plus compter sur l'option MIDPOINTS.

    Si tu as SAS 9.3, tu galèreras sans doute moins avec la proc SGPLOT pour faire ce type de graphique, par rapport à GCHART.
    Bon courage.
    Olivier

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 22
    Points : 25
    Points
    25
    Par défaut suite
    Bonjour Olivier, merci beaucoup pour vos conseils. Voici où j'en suis:
    j'ai créé une variables rt1 qui regroupe les rates par tranches de 10.
    J'ai essayé , avec proc gchart, de mettre regioj en vbar et rt1 comme variable de group; mais le résultat , pour l'instant n'est pas lisible; je suppose que je dois retravailler le layout, et comme vous dites, je galère.
    avec proc sgplot, c'est plus joli et presque OK. Sauf qu'il ne montre pas les catégories vides, ce qui est visuellement un peu trompeur. Je ne sais pas s'il y a une solution....
    je vous renvoie le fichier de données, comme ça vous pouvez voir le résultat.
    merci ! Françoise


    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
    PROC IMPORT OUT= WORK.RATE2_ARR 
                DATAFILE= "C:\brouillons\rate2_arr.txt" 
                DBMS=TAB REPLACE;
         GETNAMES=YES;
         DATAROW=2; 
    RUN;
     
    goptions reset=all cpattern=black;
    pattern1 v=r2;
    pattern2 v=l5;
    pattern3 v=s;
    proc format; value regioj 1="Flemsih region" 2="Brussels" 3="Walloon Region";run;
     
    /*Initial graph: problem= stack instead of cluster*/
    proc gchart data=rate_arr;
    vbar rt1 /midpoints=300 to 680 by 20 subgroup=regioj ;
    format regioj regioj.;
    run;
     
    /*Attempt with proc gchart: problem=not readable*/
    proc gchart data=rate_arr;
    vbar regioj/ group=rt1 gaxis=axis1;
    format regioj regioj.;
    run;
     
    /*Attempt with proc sgplot: problem= the missing categores of rates are not represented*/
    proc sgplot data=rate_arr;
    vbar rt1/ group=regioj groupdisplay=cluster ;
    format regioj regioj.;
    run;
    Fichiers attachés Fichiers attachés

  4. #4
    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 : 46
    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
    Bonsoir Françoise.
    Pour montrer toutes les catégories, même celles qui ne sont pas dans les données, il faudrait créer des données bidon.
    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
    DATA work.graduations ;
      DO rt1=300 TO 680 BY 20 ;
        OUTPUT ;
      END ;
    RUN ;
    PROC SORT DATA=work.rate_arr ;
      BY rt1 ;
    RUN ;
    DATA work.rate_arr_final ;
      MERGE work.rate_arr (IN=original)
            work.graduations ;
      BY rt1 ;
      IF original THEN x=1 ;
      ELSE DO ; x=0 ; regioj=1 ; END ;
    RUN ;
     
    /*Attempt with proc sgplot: problem= the missing categores of rates are not represented*/
    proc sgplot DATA=rate_arr_final ;
    vbar rt1 / GROUP=regioj groupdisplay=cluster RESPONSE=x STAT=SUM ;
    format regioj regioj.;
    YAXIS LABEL="Frequency" ;
    run;
    Sinon on peut opter pour une arnaque avec un détournement de needle plot : en épaississant les traits, on obtient un truc qui ressemble beaucoup à un diagramme en bâtons. Par contre il faut calculer les fréquences à l'avance, et décaler les régions.
    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
    proc freq DATA=rate_arr ;
      table rt1 * regioj / LIST SPARSE ;
      ODS OUTPUT list = work.rates ;
    RUN ;
    DATA rates ;
      SET rates ;
      IF regioj=1 THEN rt1 = rt1 - 2 ;
      IF regioj=3 THEN rt1 = rt1 + 2 ;
    RUN ;
    proc sgplot DATA=rates ;
    needle x=rt1 y=frequency / GROUP=regioj LINEATTRS=(PATTERN=SOLID THICKNESS=5) ;
    format regioj regioj.;
    YAXIS OFFSETMIN=0 ;
    XAXIS VALUES=(300 TO 680 BY 20) ;
    DISCRETELEGEND / LOCATION=INSIDE NOBORDER DOWN=3 ;
    run;
    Bon courage.
    Olivier

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 22
    Points : 25
    Points
    25
    Par défaut
    OK ça marche ! merci Olivier,
    Françoise

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

Discussions similaires

  1. Comment différencier les sous-menus d'un TMenuItem ?
    Par laclac dans le forum Débuter
    Réponses: 4
    Dernier message: 08/01/2008, 16h31
  2. Comment cacher les sous-dossiers d'un site
    Par luciano75 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 13
    Dernier message: 15/12/2007, 15h32
  3. [Librairies] Comment gérer les sous dossiers INBOX avec IMAP
    Par Cr@zyDeep dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 18/05/2006, 11h21
  4. Comment récupérer les sous répertoires d'un répertoire
    Par charliejo dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/02/2006, 08h47
  5. Comment présenter les processeurs ColdFire ?
    Par d-jo dans le forum Autres architectures
    Réponses: 2
    Dernier message: 17/10/2005, 09h49

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