Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > ODS et reporting
ODS et reporting Forum d'entraide sur les fonctionnalités de reporting de SAS : gérer les sorties et graphiques de SAS
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/11/2011, 12h17   #1
Invité régulier
 
Inscription : novembre 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 20
Points : 5
Points : 5
Par défaut PROC TABULATE masquer colonne

Bonjour,

J'ai une proc tabulate comme suit :

Code :
1
2
3
4
5
6
 
proc tabulate DATA=tmp missing ORDER=DATA;
  WHERE tg>1;
  class fin tg niv;
  TABLE (niv="") * (fin="" ALL="Total du niveau"), tg="" * (n="N"*f=6.0 PCTN="%"*f=6.2);
run;
Qui me donne ceci (image en pièce jointe).

Ma question est de savoir si il y a un moyen de ne pas afficher la colonne "niveau" (celle avec les chiffres 1,2,3) et ceci tout en gardant la ligne de somme par niveau.

Est-ce possible avec PROC TABULATE ?
Images attachées
Type de fichier : jpg screen.JPG (22,9 Ko, 9 affichages)
Ludix_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 12h28   #2
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 012
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 012
Points : 1 713
Points : 1 713
Hello,
si tu enlève sa :
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 12h31   #3
Invité régulier
 
Inscription : novembre 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 20
Points : 5
Points : 5
Si j'enlève ça je perd le sous-total par niveau justement....
Ludix_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 12h34   #4
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 012
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 012
Points : 1 713
Points : 1 713
essaies ceci:

Code :
1
2
 
TABLE  (niv=""    fin=""    ALL="Total du niveau"), tg="" * (n="N"*f=6.0 PCTN="%"*f=6.2);
PS: Je n'ai pas testé.
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 13h14   #5
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 828
Points : 2 828
Bonjour.
Je ne vois pas comment on pourrait faire cela avec une proc TABULATE. Par contre, masquer des colonnes est assez simple via une proc REPORT.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
PROC FORMAT ;
  VALUE $nom
    "XXX" = "Total du niveau"
  ;
RUN ;
PROC REPORT DATA=sashelp.class NOWD ;
  COLUMNS sex name N PCTN ;
  DEFINE sex / GROUP NOPRINT ;
  DEFINE name / GROUP FORMAT=$nom. ;
  DEFINE PCTN / "%" FORMAT=NLPCTN12.2 ;
  BREAK AFTER sex / SUMMARIZE ;
  COMPUTE AFTER sex ;
    name="XXX" ;
  ENDCOMP ;
RUN ;
Bon courage.
Olivier
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/11/2011, 13h44   #6
Invité régulier
 
Inscription : novembre 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 20
Points : 5
Points : 5
Merci de vos réponses !

Bon a priori la PROC REPORT semble être pas mal...

Juste qu'il me faudrait en plus le total général en fin de tableau (je sais, je l'avais pas mis dans l'exemple )

Est-ce possible ?
Edit : a priori oui avec RBREAK :
Code :
1
2
 
rbreak after / summarize;
Ludix_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 14h10   #7
Invité régulier
 
Inscription : novembre 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 20
Points : 5
Points : 5
Bien, voilà ou j'en suis :

Code :
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
 
proc format;
	value fin 	135="Etabl1"
				184="Etabl2"
				141="Etabl3"
				118="Etabl4"
				159="Etabl5"
				179="Etabl6"
				999="Total"
				;
run;
DATA DATA;
input fin niv tg @@;
format fin fin. niv 1. tg 5.;
datalines;
135 1 1
135 1 1
135 1 2
184 1 2
184 1 2
184 1 2
184 1 1
141 2 1
141 2 1
141 2 2
118 2 1
118 2 1
118 2 1
118 2 1
;
run;
proc report DATA=DATA nowd;
COLUMNS niv fin N PCTN;
define niv / GROUP noprint descending;
define fin / GROUP format=fin.;
define PCTN / "%" format=NLPCTN12.2;
break after niv / summarize;
compute after niv;
	fin=999;
endcomp;
rbreak after / summarize;
run;
Sauf que le libellé des totaux ne s'affichent pas...
Quelqu'un a une idée ?
Ludix_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 14h23   #8
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 828
Points : 2 828
Oui, il y a un traquenard. L'astuce de formater une valeur bidon comme 99 pour les totaux ne marche qu'avec les variables texte (enfin c'est ma règle empirique).
On va donc masquer aussi la colonne FIN qui est numérique et lui faire un petit clone de type texte.
Code :
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
 
proc format;
	value fin 	135="Etabl1"
				184="Etabl2"
				141="Etabl3"
				118="Etabl4"
				159="Etabl5"
				179="Etabl6"
				99="Total du niveau"
				999="Total général"
				;
run;
DATA DATA;
input fin niv tg @@;
format fin fin. niv 1. tg 5.;
datalines;
135 1 1
135 1 1
135 1 2
184 1 2
184 1 2
184 1 2
184 1 1
141 2 1
141 2 1
141 2 2
118 2 1
118 2 1
118 2 1
118 2 1
;
run;
proc report DATA=DATA nowd;
COLUMNS niv fin fin2 N PCTN;
define niv / GROUP noprint descending;
define fin / GROUP NOPRINT ;
define fin2 / COMPUTED "Etablissements" ;
define PCTN / "%" format=NLPCTN12.2;
break after niv / summarize;
rbreak after / summarize;
COMPUTE fin2 / LENGTH=20 ;
  SELECT (UPCASE(_break_)) ;
   WHEN ("NIV")      fin2 = PUT(99, fin.) ;
   WHEN ("_RBREAK_") fin2 = PUT(999, fin.) ;
   OTHERWISE         fin2 = PUT(fin, fin.) ;
  END ;
endcomp;
run;
C'est bien cette fois ?
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/11/2011, 14h27   #9
Invité régulier
 
Inscription : novembre 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 20
Points : 5
Points : 5
Yes ! Merci !

Et merci aussi à olivier pour la vie et l'oeuvre de la proc tabulate ça m'a bien aidé au début
Ludix_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h02.


 
 
 
 
Partenaires

Hébergement Web