Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > Macro
Macro Forum d'entraide sur le langage Macro 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 22/11/2010, 15h52   #1
Futur Membre du Club
 
julien quetel
Inscription : juillet 2010
Messages : 91
Détails du profil
Informations personnelles :
Nom : julien quetel

Informations forums :
Inscription : juillet 2010
Messages : 91
Points : 16
Points : 16
Par défaut proc gplot bloqué dans la macro

bon voila j'ai une boucle avec des freq qui marche tres bien, (dans une macro bien sure.) Mais je me suis dis que ce serait plus joli d'avoir un suivi dans le temps avec une courbe plutot qu'un tableau croisé.

Le truc que je comprends pas c'est qu'il semble qu'il lui faut 3 heures pour faire un graphe, le code est bon vu que je copie colle celui que genere sas, et quand je prends sur un seul client ca marche donc voila quelqu'un a un moyen d'accelerer ca? ou de m'expliquer pourquoi c'est si lent a partir du moment ou on le met dans une macro.

Bon je cpie colle quand meme mon code pour que ce soit plus simple


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
%macro test;
DATA _null_;
SET alz.clients;
call symputx('clients'||LEFT(trim(_n_)),utilisateur);
call symput('nb_clients',_n_);
run;
 
%do i=1 %TO 2;/*&nb_clients*/
	filename fic "\\sas\&&clients&i...pdf";
 
/*permet d'avoir en fonction du temps le nombre de ligne 
pas beaucoup de valeur pour le temps vu que je 
fonctionne avec une concatenation mois année, et on a 
commencé en decembre l'annee derniere*/
	proc freq DATA=alz.bna_coherence (WHERE=(utilisateur="&&clients&i"));
	TABLES creationmois/ out=work.masortie;
	run;
	ods listing close;
	ods pdf file=fic;
 
proc gplot DATA=work.masortie;
plot count*creationmois /VAXIS=Axis1 HAXIS=Axis2 FRAME;
run;
quit;
 
	ods pdf close;
%end;
%mend;
traersa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2010, 16h01   #2
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 133
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 133
Points : 1 744
Points : 1 744
Mets un quit; après le run;
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2010, 16h52   #3
Futur Membre du Club
 
julien quetel
Inscription : juillet 2010
Messages : 91
Détails du profil
Informations personnelles :
Nom : julien quetel

Informations forums :
Inscription : juillet 2010
Messages : 91
Points : 16
Points : 16
merci a nouveau pour ton aide, je vais finir par t'embaucher a plein temps ^^
Bon je ne savais pas pour le quit; donc je l'ai rajouté, mais ca ne change rien, j'ai remodifié mon message initial en fonction

Voici le journal :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
NOTE: Numeric VALUES have been converted TO character VALUES at the places given BY: (Line):(COLUMN).
      14:65    14:109   
NOTE: There were 293 observations READ FROM the DATA SET ALZ.CLIENTS.
NOTE: DATA statement used (Total process time):
      real time           0.07 seconds
      cpu time            0.00 seconds
 
 
 
NOTE: PROCEDURE FREQ used (Total process time):
      real time           0.57 seconds
      cpu time            0.12 seconds
 
NOTE: There were 1030 observations READ FROM the DATA SET ALZ.BNA_COHERENCE.
      WHERE utilisateur='AAA';
NOTE: The DATA SET WORK.MASORTIE has 12 observations AND 3 VARIABLES.
 
NOTE: Writing ODS PDF output TO DISK destination "\\sas\AAA.pdf", 
      printer "PDF".
NOTE: This SAS session IS USING a registry IN WORK.  ALL changes will be lost at the end of this session.
traersa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2010, 17h12   #4
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 133
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 133
Points : 1 744
Points : 1 744
parmi les trois variable dans ma sortie, tu as bien count et creationmois?

N
Citation:
OTE: Writing ODS PDF output TO DISK destination "\\sas\AAA.pdf",
printer "PDF".
bizarre ton chemin.. pourquoi tu passes par un filename? C'est pas plus simple de passer par un ods pdf directement?

Citation:
je vais finir par t'embaucher a plein temps ^^
Nickel! je cherche justement une activité salariée
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 10h29   #5
Futur Membre du Club
 
julien quetel
Inscription : juillet 2010
Messages : 91
Détails du profil
Informations personnelles :
Nom : julien quetel

Informations forums :
Inscription : juillet 2010
Messages : 91
Points : 16
Points : 16
bon j'avance petit a petit, le resultat que m'affiche sas correspond exactement a ce que je veux, probleme ce qui est enregistré dans le fichier htm n'est pas bon au lieu du graphique il me note ca

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Rapport des corpus dans la BNA pour #BYVAL1
 
"Plot of COUNT * creationmois"
Click FOR description of Plot of COUNT * creationmois
 
This graph IS a line plot of 'creationmois' BY 'Frequency Count'.
 
The following TABLE contains the DATA FROM the graph:
creationmois 	Frequency Count
2010/06	5
2010/07	31
2010/08	39
2010/09	10
2010/10	10
2010/11	2
bon par contre mon code a changé, donc je remets le nouveau

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
%macro test;
DATA _null_;
SET alz.clients;
call symputx('clients'||LEFT(trim(_n_)),utilisateur);
call symput('nb_clients',_n_);
run;
 
%do i=1 %TO 2;/*&nb_centre*/
	filename fic "\\aaa\sas\";
 
	proc freq data=alz.bna_coherence (where=(utilisateur="&&clients&i"));
	tables creationmois/ out=alz.masortie;
	run;
 
	ods listing close;
	ods html path=fic (URL=none) file="&&clients&i...htm"
	GPATH = "&&clients&i...jpeg";
	 TITLE1 "Rapport des corpus dans la BNA pour #BYVAL1" ;
	SYMBOL i = JOIN ;
 
	proc gplot DATA=alz.masortie;
	plot COUNT*creationmois /VAXIS=Axis1 HAXIS=Axis2 FRAME;
	run;
	quit;
 
	ods html close;
%end;
%mend;
traersa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 15h42   #6
Futur Membre du Club
 
julien quetel
Inscription : juillet 2010
Messages : 91
Détails du profil
Informations personnelles :
Nom : julien quetel

Informations forums :
Inscription : juillet 2010
Messages : 91
Points : 16
Points : 16
bon je comprends pas bien pourquoi, mais la il semble que ca marche en rtf, bon il me sort bien une erreur a chaque occurence de ma boucle, mais le resultat est bon donc je vais pas chipoter, je poste le code si ca peut interresser quelqu'un, a tout hasard quelqu'un sait comment on retire dans une proc tabulate ce qui est ecrit en haut a gauche
la j'ai des trucs comme ca :

en fait j'arrive pas a copier le texte on dirait que c'est du code, mais bon ca fait tres moche dans mon rapport

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
 
%macro test;
DATA _null_;
SET alz.clients;
call symputx('clients'||LEFT(trim(_n_)),utilisateur);
call symput('nb_clients',_n_);
run;
 
%do i=1 %TO 2;/*&nb_clients*/
 
	proc freq DATA=alz.bna_coherence (WHERE=(utilisateur="&&clients&i"));
	TABLES creationmois/ out=alz.masortie;
	run;
 
	ODS _all_ close;
ods  rtf  file="\\AAA\sas\&&clients&i...rtf"  NOCONTENTS NOGFOOTNOTE NOGTITLE NOKEEPN NOLSTPIPE NOOUTLINE startpage=never;
ods noproctitle;
 
	SYMBOL i = JOIN ;
 
proc gplot DATA=alz.masortie;
plot COUNT*creationmois;
run;
quit;
	TITLE "Tableau de controle de coherence";
 
	proc tabulate DATA=alz.bna_coherence (WHERE=(utilisateur="&&clients&i"));
	Class age /	ORDER=DATA ;
	KEYLABEL n='occurence' pctn='frequence';
	TABLE AGE=''  ALL='total',
	N;
	run;
ods rtf close;
 
%end;
%mend;
traersa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h39.


 
 
 
 
Partenaires

Hébergement Web