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 :

PROC GCHART Changer l'ordre d'apparition des sous-groupes


Sujet :

ODS et reporting

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Points : 39
    Points
    39
    Par défaut PROC GCHART Changer l'ordre d'apparition des sous-groupes
    Bonjour,

    Tout est dans le titre !

    Avec par exemple la table suivante :

    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
    DATA test;
    INPUT ville $ mois sexe $ statut $ class_age $ var1;
    CARDS;
    lille	2	M	non	<10	238
    paris	2	M	non	<10	383
    paris	2	F	non	<10	426
    lille	1	F	non	<10	476
    lille	1	M	non	>50	1289
    paris	1	M	non	<10	2046
    paris	1	M	non	>50	2271
    paris	1	F	non	<10	2672
    paris	1	F	oui	>50	3226
    lille	1	F	oui	>50	3322
    lille	2	M	oui	>10	3808
    paris	2	M	oui	>10	5783
    lille	1	M	oui	>10	7199
    lille	2	F	oui	>10	8100
    paris	2	M	nsp	>50	244
    lille	2	M	nsp	<10	334
    paris	2	F	nsp	<10	428
    paris	2	F	nsp	>50	485
    lille	2	F	nsp	<10	520
    paris	2	M	nsp	>10	1127
    lille	1	M	nsp	>50	1220
    lille	1	F	nsp	>50	2269
    paris	2	F	nsp	>10	2278
    lille	1	M	nsp	>10	4529
    lille	2	M	nsp	>10	4637
    paris	1	M	nsp	>10	5612
    lille	1	F	nsp	>10	9277
    lille	2	F	nsp	>10	9936
    paris	2	F	oui	<10	1193
    paris	2	M	oui	<10	1465
    paris	2	M	oui	>50	2426
    paris	1	F	oui	<10	3432
    paris	1	M	oui	<10	3547
    paris	2	F	oui	>50	4120
    lille	1	M	oui	<10	4896
    lille	2	M	oui	<10	4992
    lille	2	F	oui	<10	7982
    lille	2	M	oui	>50	9200
    lille	1	F	oui	<10	9542
    paris	1	M	oui	>50	10222
    ;
    RUN;
    et ce code :
    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
    PROC SORT DATA = test OUT = test1;
    	BY ville mois sexe class_age;
    RUN;
    AXIS1 LABEL = NONE;
    LEGEND1	LABEL = NONE;
    OPTION NOBYLINE;
     
    PROC GCHART DATA = test1;
    	HBAR class_age / SUBGROUP = statut
    					LEGEND = LEGEND1
    					FREQ = var1
    					TYPE = PERCENT
    					NOSTAT
    					MAXIS = axis1;
    RUN;
    J'aimerais que, dans chaque barre, apparaisse d'abord le oui puis le non puis le nsp.

    J'ai testé pas mal de choses, notamment avec les options order= et value= de Legend1=, mais sans succès.
    Un peu d'aide ne me ferait pas de mal

    Merci !

  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 : 47
    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.
    Les sous-groupes sont affichés selon l'ordre de leurs valeurs non formatées.
    Il faudrait donc recoder STATUT, par exemple en A pour oui, B pour non et C pour nsp : ça ordonnerait les catégories selon tes vœux.
    Pour que l'affichage soit bon, il suffit d'ajouter un format qui affiche oui pour A, non pour B et nsp pour C.
    Bon courage.
    Olivier
    Bon courage.
    Olivier

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Points : 39
    Points
    39
    Par défaut
    Je pense que j'ai déjà essayé cette méthode en m'appuyant justement sur un post trouvé dans le forum.

    Un truc du genre :

    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
    PROC FORMAT;
         VALUE $statut_fmt "oui" = 1
                           "non" = 2
                           "nsp" = 3;
    RUN;
     
    DATA test;
    SET test;
         rang = PUT(statut, $statut_fmt.);
    RUN;
     
    PROC SORT DATA = test OUT = test1 (DROP = rang);
         BY ville mois sexe class_age rang;
    RUN;
     
    AXIS1 LABEL = NONE;
    LEGEND1	LABEL = NONE;
    OPTION NOBYLINE;
     
    PROC GCHART DATA = test1;
    	HBAR class_age / SUBGROUP = statut
    					LEGEND = LEGEND1
    					FREQ = var1
    					TYPE = PERCENT
    					NOSTAT
    					MAXIS = axis1;
    RUN;
    sans beaucoup plus de résultats !

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Points : 39
    Points
    39
    Par défaut
    Et tant que j'y suis, je me permets de vous solliciter pour un autre problème du même type :

    Je veux maintenant ordonner les barres de mon graphique. Pour cela, j'utilise l'option MIDPOINTS= avec une macro variable contenant le nom des barres, entre guillemets et dans l'ordre voulu.
    Mes barres sont effectivement réorganisées mais je perds toute l'information pour l'une d'elles (la barre est à 0).

    Ce n'est pas le bon intitulé me direz-vous !
    Et pourtant SI ! D'autant plus que j'ai utilisé une macro-variable plutôt que de tout retaper à la main, donc pas d'erreur possible à ce niveau (?) !

    Une idée de l'origine du problème ?

  5. #5
    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 : 47
    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
    Pour le 1er problème, une fois que tu as créé la variable RANG, ce n'est pas utile de s'en servir dans un tri, par contre c'est ta variable dans SUBGROUP. Et tu ajoutes un format dans le sens inverse du précédent pour afficher tes libellés habituels.
    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
    DATA test;
    INPUT ville $ mois sexe $ statut $ class_age $ var1;
    CARDS;
    lille	2	M	non	<10	238
    paris	2	M	non	<10	383
    paris	2	F	non	<10	426
    lille	1	F	non	<10	476
    lille	1	M	non	>50	1289
    paris	1	M	non	<10	2046
    paris	1	M	non	>50	2271
    paris	1	F	non	<10	2672
    paris	1	F	oui	>50	3226
    lille	1	F	oui	>50	3322
    lille	2	M	oui	>10	3808
    paris	2	M	oui	>10	5783
    lille	1	M	oui	>10	7199
    lille	2	F	oui	>10	8100
    paris	2	M	nsp	>50	244
    lille	2	M	nsp	<10	334
    paris	2	F	nsp	<10	428
    paris	2	F	nsp	>50	485
    lille	2	F	nsp	<10	520
    paris	2	M	nsp	>10	1127
    lille	1	M	nsp	>50	1220
    lille	1	F	nsp	>50	2269
    paris	2	F	nsp	>10	2278
    lille	1	M	nsp	>10	4529
    lille	2	M	nsp	>10	4637
    paris	1	M	nsp	>10	5612
    lille	1	F	nsp	>10	9277
    lille	2	F	nsp	>10	9936
    paris	2	F	oui	<10	1193
    paris	2	M	oui	<10	1465
    paris	2	M	oui	>50	2426
    paris	1	F	oui	<10	3432
    paris	1	M	oui	<10	3547
    paris	2	F	oui	>50	4120
    lille	1	M	oui	<10	4896
    lille	2	M	oui	<10	4992
    lille	2	F	oui	<10	7982
    lille	2	M	oui	>50	9200
    lille	1	F	oui	<10	9542
    paris	1	M	oui	>50	10222
    ;
    RUN;
    PROC FORMAT;
         INVALUE statut_infmt "oui" = 1
                           "non" = 2
                           "nsp" = 3;
        VALUE statut_fmt
            1 = "oui" 
            2 = "non" 
            3 = "nsp" ;
    RUN;
     
    DATA test;
    SET test;
         rang = INPUT(statut, statut_infmt.);
    RUN;
    AXIS1 LABEL = NONE;
    LEGEND1	LABEL = NONE;
    OPTION NOBYLINE;
    PROC GCHART DATA = test;
      FORMAT rang statut_fmt. ;
    	HBAR class_age / SUBGROUP = rang
    					LEGEND = LEGEND1
    					FREQ = var1
    					TYPE = PERCENT
    					NOSTAT
    					MAXIS = axis1 ;
    RUN; QUIT ;
    Bon courage.
    Olivier

  6. #6
    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 : 47
    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
    Pour le 2e problème, est-ce que la variable est numérique ou caractère ?
    Avec un format ou non ?
    Comment crées-tu la macro-variable, CALL SYMPUTX ou PROC SQL ?
    Bon courage.
    Olivier

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Points : 39
    Points
    39
    Par défaut
    Merci beaucoup, ça marche très bien maintenant !

    Pour le deuxième problème, il s'agit comme dans l'exemple d'une variable numérique, sans format et je crée ma macro-variable en utilisant une proc SQL comme ceci :

    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 test1;
    SET test1;
    	IF class_age = "<10" THEN rang = 3;
    	IF class_age = ">10" THEN rang = 2;
    	IF class_age = ">50" THEN rang = 1;
    RUN;
     
    PROC SQL NOPRINT;
    	SELECT DISTINCT QUOTE(STRIP(class_age)) INTO :var separated BY " " FROM test1 ORDER BY rang;
    QUIT;
     
    AXIS1 LABEL = NONE;
    LEGEND1	LABEL = NONE;
    OPTION NOBYLINE;
     
    PROC GCHART DATA = test1;
    	HBAR class_age / SUBGROUP = statut
    					LEGEND = LEGEND1
    					MIDPOINTS = &var.
    					FREQ = var1
    					TYPE = PERCENT
    					NOSTAT
    					MAXIS = axis1;
    RUN;
    Pourquoi ajoutes-tu un QUIT; après le RUN; à la fin de la proc GCHART ?

  8. #8
    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 : 47
    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
    Citation Envoyé par Hélixe Voir le message
    Pour le deuxième problème, il s'agit comme dans l'exemple d'une variable numérique, sans format
    Ben non, dans ton exemple, c'est une variable caractère (CLASS_AGE) et pas numérique.
    Et si tu ajoutes l'option DISCRETE avec MIDPOINTS et compagnie ?

    Citation Envoyé par Hélixe Voir le message
    Pourquoi ajoutes-tu un QUIT; après le RUN; à la fin de la proc GCHART ?
    C'est une vieille histoire, la présence de ce QUIT, mais normalement il est nécessaire pour terminer totalement la proc GCHART (idem pour GPLOT, REG, GLM, DATASETS, et quelques autres procédures qui ont des RUN et des QUIT). Cela dit, si tu es dans Enterprise Guide, les QUIT sont ajoutés automatiquement en fin de programme, donc petit à petit je pense qu'on va arriver à s'en débarrasser...
    Bon courage.
    Olivier

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Points : 39
    Points
    39
    Par défaut
    Oui pardon, c'est bien comme dans l'exemple donc CARACTERE !
    J'ai essayé avec DISCRETE, pas d'amélioration.

    Sinon, n'y a t il pas un autre moyen d'ordonner les barres de l'histogramme que cette option MIDPOINTS ?

  10. #10
    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 : 47
    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
    Tu peux écrire un AXIS avec une option VALUES et/ou ORDER, puis le brancher comme MAXIS.
    Bon courage.
    Olivier

  11. #11
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Points : 39
    Points
    39
    Par défaut
    Voilà, tout à fait !
    J'avais déjà fait la même chose pour la légende.

    Merci beaucoup !!!

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 12/12/2014, 11h31
  2. [Sources/Macros] [PROC GCHART] Modifier l'ordre d'apparition des sous-groupes d'un diagramme en barres
    Par fafabzh6 dans le forum Contribuez
    Réponses: 0
    Dernier message: 04/08/2014, 15h00
  3. Changer l'ordre d'apparition des colonnes dans un LOV
    Par roby_rou dans le forum Oracle
    Réponses: 2
    Dernier message: 07/05/2010, 21h25
  4. [MySQL] Changer l'ordre d'apparition de mes articles
    Par sandddy dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 17/10/2007, 12h41
  5. Réponses: 8
    Dernier message: 17/04/2007, 11h35

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