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 05/07/2011, 11h17   #1
Membre éclairé
 
Avatar de Filippo
 
Homme Philippe
Statisticien
Inscription : mai 2004
Messages : 654
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 38
Localisation : France, Eure (Haute Normandie)

Informations professionnelles :
Activité : Statisticien

Informations forums :
Inscription : mai 2004
Messages : 654
Points : 396
Points : 396
Par défaut [Proc Report] Afficher "Total" dans ligne rbreak

Bonjour,
j'effectue une tableau avec une proc report.

J'aimerais afficher le mot "TOTAL" sur la ligne de total définie avec rbreak. Je cherche dans la doc mais je ne trouve pas.

Est-ce que c'est possible de faire ça ?

Merci.



Code :
1
2
3
4
5
6
7
8
9
10
11
12
%macro tabFlux(MyTable, MyVarLi);
	proc report nowd DATA=&MyTable missing;
	COLUMN &MyVarLi entres sortis presents flux flux_p; 
	define &MyVarLi / GROUP; 
	define flux_p / computed "Pourcentage (%)"; 
	compute flux_p;
		flux_p=flux.sum/presents.sum*100;
	endcomp;
 
	rbreak after  / ol summarize style=[font_size=8pt font_weight=bold foreground=black background=gainsboro]; /* ligne total */
run;
%mend;
__________________
"Le sage ne dit pas ce qu'il sait alors que le sot ne sait pas ce qu'il dit"
Filippo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 11h46   #2
Futur Membre du Club
 
Inscription : août 2010
Messages : 28
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 28
Points : 18
Points : 18
Salut,

J'avais le même problème que toi. La solution que j'ai trouvée est passer par un compute.

Code :
1
2
3
4
compute &MyVarLi ;
IF _break_ ne " " then &MyVarLi ="Total";
endcomp;
rbreak after/summarize skip dol dul;
Chez moi ça fonctionne bien.
ddijoux est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/07/2011, 12h55   #3
Membre éclairé
 
Avatar de Filippo
 
Homme Philippe
Statisticien
Inscription : mai 2004
Messages : 654
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 38
Localisation : France, Eure (Haute Normandie)

Informations professionnelles :
Activité : Statisticien

Informations forums :
Inscription : mai 2004
Messages : 654
Points : 396
Points : 396
Merci Ddijoux,
ça ne marche pas encore.

J'essaie de bricoler la syntaxe.

Code :
1
2
3
compute &MyVarLi;
		%IF _break_ ne " " %then %let MyVarLi ="Total";
endcomp;
En tout cas, je n'avais pas eu l'idée du compute.
__________________
"Le sage ne dit pas ce qu'il sait alors que le sot ne sait pas ce qu'il dit"
Filippo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 15h42   #4
Membre éclairé
 
Avatar de Filippo
 
Homme Philippe
Statisticien
Inscription : mai 2004
Messages : 654
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 38
Localisation : France, Eure (Haute Normandie)

Informations professionnelles :
Activité : Statisticien

Informations forums :
Inscription : mai 2004
Messages : 654
Points : 396
Points : 396
Je crois que ça ne marche pas parce que &MyVarLi est numérique et que j'essaie de forcer la valeur à "TOTAL" qui est alphanumérique.
__________________
"Le sage ne dit pas ce qu'il sait alors que le sot ne sait pas ce qu'il dit"
Filippo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 16h16   #5
Futur Membre du Club
 
Inscription : août 2010
Messages : 28
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 28
Points : 18
Points : 18
La seul solution qu'il te reste je pense est de créer une variable "bis" texte (c'est celle là que tu afficheras) à partir de ta variable 1 (ne pas l'afficher avec l'option noprint) et de créer avec un compute :
Code :
1
2
3
4
compute variable2/ character length=25;
   IF _break_ ne " " then variable2="Total";else variable2=variable1;
endcomp;
rbreak after/summarize skip dol dul;
Par contre, dans mons cas j'ai crée cette variable dans ma table de départ et pas directement dans la procédure report (cela peut être contraignant).

Normalement ça marche, moi mon souçi était que la variable que je souhaitais était alphanumérique et je voulais dans la ligne total un comptage des valeurs de cette variable alphanumérique.

A moins que ça fonctionne directement sans passer par variable bis, et de définir directement dans le compute qu'elle est "CHARACTER" : à tester.


J'espère que c'est à peu près clair. J'ai pas l'habitude d'expliquer des codes.
ddijoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 16h48   #6
Membre éclairé
 
Avatar de Filippo
 
Homme Philippe
Statisticien
Inscription : mai 2004
Messages : 654
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 38
Localisation : France, Eure (Haute Normandie)

Informations professionnelles :
Activité : Statisticien

Informations forums :
Inscription : mai 2004
Messages : 654
Points : 396
Points : 396
Je n'arrive pas à récupérer la valeur de &MyVarLi dans v2.

Avec
Code :
IF _break_ eq "_RBREAK_" then v2="TOTAL";else v2=&MyVarLi;
j'obtiens
Citation:
WARNING: bran n'est pas dans la définition du rapport.
Et je perds toutes les modalités de &MyVarLi.

Avec :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
%macro tabFlux(MyTable, MyVarLi);
	proc report nowd DATA=&MyTable missing;
 
		COLUMN v2 entres sortis presents flux flux_p; 
		define &MyVarLi / noprint GROUP; 
		define v2 / computed;
		define flux_p / computed "Flux rapportés aux presents au 31 Déc. &MyAn. (%)"; 
 
		compute flux_p;
			flux_p=flux.sum/presents.sum*100;
		endcomp;
 
		compute v2 / character length=5;
			v2=put(&MyVarLi,1.);
		   	/*IF _break_ eq "_RBREAK_" then v2="TOTAL";else v2=&MyVarLi;*/
		endcomp;
 
		rbreak after/summarize skip dol dul;
 
	run;
%mend;
Je n'obtiens qu'une ligne à zéro.

Je crois que je vais laisser tomber car même si j'arrive à dupliquer &MyVarLi dans une variable alphanumérique il faudra aussi que je duplique le format de toutes les variables sur lesquelles j'applique la macro, ça devient assez lourd à gérer.

En tout cas merci pour les infos.

Ca peut servir si j'applique la macro sur des variables alphanumériques.

C'est dommage qu'il n'y ait pas l'équivalent du ALL="TOTAL" de la proc tabulate.

__________________
"Le sage ne dit pas ce qu'il sait alors que le sot ne sait pas ce qu'il dit"
Filippo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 17h19   #7
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 823
Points : 2 823
Ton message survient parce que la variable de groupe d'origine et la nouvelle doivent être dans COLUMN toutes les deux, dans l'ordre ci-dessus.
Code :
1
2
3
4
5
6
7
8
9
10
11
PROC REPORT DATA=sashelp.class NOWD ;
  COLUMNS age ageAvecTot weight N ;
  DEFINE age / GROUP NOPRINT ;
  DEFINE ageAvecTot / COMPUTED "Age" ;
  DEFINE weight / ANALYSIS MEAN FORMAT=12.2 ;
  RBREAK AFTER / SUMMARIZE ;
  COMPUTE ageAvecTot / CHARACTER LENGTH=5 ;
    IF _break_="_RBREAK_" THEN ageAvecTot = "TOTAL" ;
	ELSE ageAvecTot = PUT(age,5.) ;
  ENDCOMP ;
RUN ;
Bon courage.
Olivier
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 06/07/2011, 08h30   #8
Membre éclairé
 
Avatar de Filippo
 
Homme Philippe
Statisticien
Inscription : mai 2004
Messages : 654
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 38
Localisation : France, Eure (Haute Normandie)

Informations professionnelles :
Activité : Statisticien

Informations forums :
Inscription : mai 2004
Messages : 654
Points : 396
Points : 396
Merci Olivier,
ça fonctionne bien.

Par contre je ne trouve pas pratique d'avoir à redéfinir tous mes formats en double. En fait je n'utilise la proc report que sur des variables de group numériques avec un format.

Je vais garder la proc report mais j'ajouterais "TOTAL" à la main ou en vb.

En tout cas merci.

__________________
"Le sage ne dit pas ce qu'il sait alors que le sot ne sait pas ce qu'il dit"
Filippo 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 23h29.


 
 
 
 
Partenaires

Hébergement Web