|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Étudiant Inscription : mai 2011 Messages : 20 ![]() |
Bonjour,
je voulais savoir si il est possible de mettre noprint sur une variable across selon les valeurs de cette variable. Concretement, j'ai une variable mois avec les valeurs janvier...décembre, et je voudrais mettre noprint pour les mois après mai. Je ne peux pas mettre un where car j'ai besoin des valeurs des mois qui ne sont pas affichés. En effet, la première colonne de mon tableau fait la somme sur l'année,si je met un where j'ai le total que pour les 5 premiers mois. Merci pour votre aide. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Biostatisticien Inscription : juin 2009 Messages : 1 143 ![]() |
Si tu met l'option across, une colonne va être créée pour chaque catégorie. Ta somme reflètera toutes les catégories, donc il me semble que ce que tu veux faire ne peut être effectué en une étape. Le noprint s'applique sur une variable.
A priori je partirais sur une solution en deux étape: je commencerais par créer une nouvelle (treizième) modalité correspondant à la somme annuelle. Ensuite dans la proc report je génèrerais une sortie avec les 5 premiers mois et la somme (qui deviendra une sixième colonne dans ton across-> c'est bien la présentation que tu souhaites?) |
|
|
10
|
|
|
#3 |
|
Invité régulier
![]() Étudiant Inscription : mai 2011 Messages : 20 ![]() |
J'ai une table de départ qui est assez grosse. De plus, pour chaque mois, je regarde ensuite les valeurs pour différentes années. Ca me paraît donc compliqué de faire comme ca pour chaque année.
Est-ce qu'il n'y a pas possibilité de creer mon tableau pour les 12 mois et de demander à la proc report de me sortir que les 15 premières colonnes par exemple? |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Biostatisticien Inscription : juin 2009 Messages : 1 143 ![]() |
Peux tu fournir tes données (modifiées si gênant, ou seulement une partie tant que ça reste représentatif) ainsi ainsi que la présentation escomptée en sortie?
|
|
|
00
|
|
|
#5 | ||||
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
Bonjour Servane.
Si je comprends bien, tu as une colonne par mois et pas l'envie de voir les mois qui ne sont pas encore d'actualité pour certaines années. Comme ceci ? Code :
Code :
|
||||
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Étudiant Inscription : mai 2011 Messages : 20 ![]() |
Je ne peux pas utilisé la proc tabulate car j'ai besoin d'une mise en page précise sur mon tableau. J'ai besoin de mettre des couleurs différentes sur une même colonne en fonction d'une variable.
J'aimerai un tableau dans ce genre (voir piece jointe) Dans la colonne annee 2010: je veux le total sur toute l'annee 2010 Dans la colonne annee 2011: je veux le total sur toute l'annee 2011 Après pour chaque mois, je veux les totaux pour chaque annee ainsi que l'evolution entre ces deux dates, mais je voudrais qu'il m'affiche les groupes de colonnes (2010 2011 evolution) seulement pour les mois de janvier à mai. Si j'utilise un where=(mois<=mai) dans le total annee 2010, je n'ai pas les données de juin 2010 à décembre 2010. |
|
|
00
|
|
|
#7 | ||
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
Comme proposait Manoutz, il faut décomposer en 2 étapes, 1 pour calculer les sommes annuelles (et les autres tant qu'on y est) puis REPORT avec un WHERE pour organiser tout ça.
Code :
Olivier |
||
|
|
30
|
|
|
#8 |
|
Invité régulier
![]() Étudiant Inscription : mai 2011 Messages : 20 ![]() |
Bonjour Manoutz et Olivier!
J'ai suivi vos conseils et j'ai donc utilisé le code proposé par Olivier (sauf le (WHERE=(month < "01APR1994"D)) dans la proc means car je ne comprends pas son utilité. La proc means fonctionne bien, j'ai bien les totaux que j'attends. Par contre, à l'exécution de la proc means je retrouve le même résultat qu'avant. J'ai toujours pour la somme de l'année, la somme des 5 premiers mois. J'ai essayé de refaire une étape data après la proc means afin de créer une nouvelle variable (var1) qui vaut actual_sum si month=. et . sinon. Dans la proc report j'ai ensuite changer Code :
COLUMNS product year,actual month,(year=year2,actual=actual2) ; Code :
COLUMNS product year,var1 month,(year=year2,actual=actual2) ; |
|
|
00
|
|
|
#9 | ||
|
Membre Expert
![]() Biostatisticien Inscription : juin 2009 Messages : 1 143 ![]() |
Tu as du commettre quelques erreurs. Le code d'Olivier est particulièrement puissant. Chapeau bas..
J'ai rajouté quelques petites astuces pour bien coller à ta demande. Par contre je n'ai pas réussi à éviter une mini étape data pour renommer la catégorie "total" de la variable country - en tant que valeur manquante, elle n'est pas affichée. Reste quelques modifs minimes pour gérer l'ordonnacement et les couleurs, mais c'est broutilles. Code :
|
||
|
|
10
|
|
|
#10 |
|
Invité régulier
![]() Étudiant Inscription : mai 2011 Messages : 20 ![]() |
Merci à tous les deux, ca y est cela fonctionne. Finalement dans la proc report j'ai marqué
COLUMNS product month,(year=year2,actual=actual2) ; et j'ai ajouté missing dans le define de la variable month. Ainsi, sas considère la valeur . de la variable mois comme le total à l'année..et hop ca fonctionne!! Merci encore à Manoutz et Olivier. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com