FAQ SASConsultez toutes les FAQ

Nombre d'auteurs : 13, nombre de questions : 308, dernière mise à jour : 5 avril 2016  Ajouter une question

 

Cette F.A.Q., qui traite de tout type de questions portant sur l'outil SAS, a été réalisée à partir des contributions des membres des forums sas de developpez.com en vue de répondre à des questions fréquemment posées par les utilisateurs et grâce à SAS France qui a bien voulu nous donner accès à ses sources.

Si vous désirez contribuer à l'amélioration de cette F.A.Q., vous pouvez participer au billet de participation à l'enrichissement de la faq SAS , ou contacter le responsable SAS , ou contacter un des responsables de l'équipe Business Intelligence .

Nous espérons que cette F.A.Q. saura répondre à un maximum de vos questions. Nous vous souhaitons une bonne lecture.

L'équipe SAS de developpez.com remercie les contributeurs actuels : ash_rmy , bahraoui , datametric , fafabzh6 , Fleur-Anne.Blain , green_fr , oncle_pete , raf64flo , rastoix , s_a_m et steelspirit .

L'équipe SAS de developpez.com remercie aussi claudeLeloup et jacques_jean pour leurs relectures attentives de la F.A.Q. dans le but de chasser les fautes d'orthographes.


SommaireReporting et ODSGraphiques (16)
précédent sommaire suivant
 

Avec les options 'tick' et 'color' vous pouvez contrôler entièrement l'apparence de l'affichage des valeurs de l'axe des abscisses.

Code sas : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
DATA base; 
   do i=1 TO 100; 
      x=rannor(0); 
      output; 
   end; 
run; 
axis1 value=(color=white tick=1 color=black tick=3 color=red tick=5 color=black tick=7  
color=red tick=9 color=black tick=11 color=red) ; 
proc gchart DATA=base; 
vbar x / maxis=axis1 midpoints=(-5 TO 5 BY 1) ; 
run;

Mis à jour le 27 avril 2012 fafabzh6

En utilisant l'option DATTRMAP , disponible depuis la version SAS 9.3, vous pouvez paramétrer les couleurs de vos barres.

Ci-dessous un exemple de code SAS :

Code sas : Sélectionner tout
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
Title; 
  
DATA essai1; 
input ID $ value $ linecolor $ fillcolor $; 
datalines; 
myid  F yellow yellow 
myid  M red red 
; 
run; 
  
proc sgplot DATA=sashelp.class dattrmap=essai1 ; 
vbar age / response=height GROUP=sex   attrid=myid; 
run; 
  
DATA essai2; 
input ID $ value $ linecolor $ fillcolor $; 
datalines; 
myid  F pink pink 
myid  M blue blue 
; 
run; 
  
proc sgplot DATA=sashelp.class dattrmap=essai2 ; 
vbar age / response=height GROUP=sex   attrid=myid; 
run;

Mis à jour le 27 avril 2012 sas

À l'aide de l'option 'order', vous pouvez paramétrer cet ordre d'apparition.

Ci-dessous, un exemple de code SAS :

Code sas : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DATA work.sales ; 
  SET sashelp.prdsale ; 
  SELECT (country) ; 
    WHEN ("GERMANY") CatNum = 1 ; 
    WHEN ("CANADA")  CatNum = 2 ; 
	OTHERWISE        CatNum = 3 ; 
  END ; 
RUN ; 
PATTERN1 C=YELLOW ; /* Allemagne */ 
PATTERN2 C=RED ;    /* Canada */ 
PATTERN3 C=BLUE ;   /* Etats-Unis */ 
LEGEND1 VALUE=("Allemagne"  "Canada" "Etats-Unis") 
		ORDER=(1 2 3) 
			LABEL = none 
			SHAPE=bar(1.3,0.7); 
PROC GCHART DATA=work.sales ; 
  VBAR product / SUBGROUP=catNum SUMVAR=actual TYPE=SUM  
				LEGEND=legend1 ; 
RUN ; QUIT ;

Mis à jour le 20 décembre 2012 fafabzh6

À l'aide des procédures TEMPLATE et SGPLOT, vous pouvez créer un graphique contenant plusieurs sous-graphiques.

Le code ci-dessous est un exemple de code SAS vous permettant de créer un graphique contenant quatre sous-graphiques.

Code sas : Sélectionner tout
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
proc template; 
define statgraph sgdesign; 
dynamic _SEX _HEIGHT _AGE _WEIGHT _NAME _WEIGHT2 _SEX2 _HEIGHT2; 
begingraph; 
   layout lattice / rowdatarange=DATA columndatarange=DATA rows=2 COLUMNS=2 rowgutter=10 columngutter=10 rowweights=(0.5 0.5); 
      layout overlay; 
         boxplot x=_SEX y=_HEIGHT / name='box' boxwidth=0.4 discreteoffset=0.0 clusterwidth=1.0; 
      endlayout; 
      layout overlay; 
         boxplot x=_AGE y=_WEIGHT / name='box2' boxwidth=0.4 groupdisplay=Cluster clusterwidth=1.0; 
      endlayout; 
      layout overlay; 
         boxplot x=_NAME y=_WEIGHT2 / name='box3' boxwidth=0.4 groupdisplay=Cluster clusterwidth=1.0; 
      endlayout; 
      layout overlay; 
         boxplot x=_SEX2 y=_HEIGHT2 / name='box4' boxwidth=0.4 groupdisplay=Cluster clusterwidth=1.0; 
      endlayout; 
   endlayout; 
endgraph; 
end; 
run; 
  
proc sgrender DATA=SASHELP.CLASS  template=sgdesign; 
dynamic _SEX="SEX" _HEIGHT="HEIGHT" _AGE="AGE" _WEIGHT="WEIGHT" _NAME="NAME" _WEIGHT2="WEIGHT" _SEX2="SEX" _HEIGHT2="HEIGHT"; 
run;

Mis à jour le 20 décembre 2012 fafabzh6

À l'aide des options 'entrytitle', 'entryfootnote' et 'entry' de la procédure TEMPLATE vous pouvez gérer les titres des graphiques.

Le code ci-dessous est un exemple vous permettant de réaliser cette manipulation.

Code sas : Sélectionner tout
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
proc template; 
define statgraph sgdesign; 
dynamic _SEX _HEIGHT _AGE _WEIGHT _NAME _WEIGHT2 _SEX2 _HEIGHT2; 
begingraph; 
   entrytitle halign=center 'Saisissez votre titre...'; 
   entryfootnote halign=LEFT 'Saisissez votre note de bas de page...'; 
   layout lattice / rowdatarange=DATA columndatarange=DATA rows=2 COLUMNS=2 rowgutter=10 columngutter=10 rowweights=(0.5 0.5); 
      layout overlay; 
         boxplot x=_SEX y=_HEIGHT / name='box' boxwidth=0.4 discreteoffset=0.0 clusterwidth=1.0; 
         entry halign=center 'Titre 1' / valign=top location=outside textattrs=(style=italic weight=normal ); 
      endlayout; 
      layout overlay; 
         boxplot x=_AGE y=_WEIGHT / name='box2' boxwidth=0.4 groupdisplay=Cluster clusterwidth=1.0; 
         entry halign=center 'Titre 2' / valign=top location=outside textattrs=(style=normal weight=bold ); 
      endlayout; 
      layout overlay; 
         boxplot x=_NAME y=_WEIGHT2 / name='box3' boxwidth=0.4 groupdisplay=Cluster clusterwidth=1.0; 
         entry halign=center 'Titre 3' / valign=top location=outside; 
      endlayout; 
      layout overlay; 
         boxplot x=_SEX2 y=_HEIGHT2 / name='box4' boxwidth=0.4 groupdisplay=Cluster clusterwidth=1.0; 
         entry halign=center 'Titre 4' / valign=top location=outside; 
      endlayout; 
   endlayout; 
endgraph; 
end; 
run; 
  
proc sgrender DATA=SASHELP.CLASS  template=sgdesign; 
dynamic _SEX="SEX" _HEIGHT="HEIGHT" _AGE="AGE" _WEIGHT="WEIGHT" _NAME="NAME" _WEIGHT2="WEIGHT" _SEX2="SEX" _HEIGHT2="HEIGHT"; 
run;

Mis à jour le 20 décembre 2012 fafabzh6

À l'aide des procédures TEMPLATE et SGENDER, vous pouvez contrôler l'apparence de vos boxplots.

Ci-dessous un exemple de programme SAS.

Code sas : Sélectionner tout
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
PROC TEMPLATE ; 
   DEFINE STATGRAPH boxplot.lapin / STORE=work.modeles ; 
      DYNAMIC couleur1 couleur2 ; 
      BEGINGRAPH ; 
	    LAYOUT LATTICE / ROWS=2 ROWWEIGHTS=(.8 .2) ; 
		    LAYOUT OVERLAY ; 
	            BOXPLOT X=country Y=actual / FILLATTRS=(COLOR=couleur1) ; 
				BOXPLOT X=country Y=actualBis / FILLATTRS=(COLOR=couleur2) ; 
			ENDLAYOUT ; 
			LAYOUT GRIDDED / ROWS=2 ; 
				BLOCKPLOT X=country BLOCK=moy / VALUEHALIGN=CENTER  
												DISPLAY=(label VALUES) ; 
				BLOCKPLOT X=country BLOCK=et  / VALUEHALIGN=CENTER  
												DISPLAY=(label VALUES) ; 
			ENDLAYOUT ; 
		ENDLAYOUT ; 
      ENDGRAPH ; 
   END ; 
RUN ; 
ODS PATH (PREPEND) work.modeles ; 
PROC SQL ; 
  CREATE TABLE work.sales AS 
    SELECT *, 
	       CASE WHEN (country EQT "G") THEN actual ELSE . END AS actualBis, 
		   MEAN(actual) AS moy LABEL="Moy=", 
		   STD(actual) AS et LABEL="Std=" 
	FROM sashelp.prdsale  
    WHERE FIRST(country) IN ("G","C")  
    GROUP BY country ; 
QUIT ; 
PROC SGRENDER DATA=work.sales TEMPLATE=boxplot.lapin ; 
  DYNAMIC couleur1 = "red" couleur2 = "yellow" ; 
RUN ;

Mis à jour le 20 décembre 2012 fafabzh6

La TS674 détaille les méthodes pour exporter, dans Microsoft Office, des sorties produites par SAS/GRAPH.
Elle est disponible à l'adresse suivante : http://support.sas.com/techsup/techn...674/ts674.html

Mis à jour le 20 avril 2014 fafabzh6 sas

Voici un exemple de code SAS qui représente sur le même graphique par des barres verticales les ventes d'une société pour les 6 premiers mois de l'année et par une courbe les bénéfices correspondants :

Code sas : Sélectionner tout
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
Data FY1992 ;/*Génération des données pour le graphe*/ 
      input month date7. sales earnings ; 
      label month= '1992' ; 
      cards ; 
   01jan92    375    90 
   01feb92    420   120 
   01mar92   400    210 
   01apr92    360   170 
   01may92  280   150 
   01jun92    320   140 
   ; 
   title1 height = 6 pct 'JLR Entreprises' ; 
   title2 height = 4 pct 'Semi-annual Report' ; 
   footnote box = 1 blank = yes height = 4 pct 
      color = graycc font = swissb '03' x 
      color = black font = swissl height = 3 pct 
      ' SALES - $ - EARNINGS ' ; 
   axis1 order = '01jan92'd to '01jun92'd by month offset = (5) major = none ; 
   axis2 label = none order = 0 to 5000 by 100 offset = (0,0) ; 
   symbol1 color = graycc interpol = needle value = none width = 200 ; 
   symbol2 color = black interpol = join font = swissb value = $ 
      height = 5 pct width = 3 ; 
 
   proc GPLOT data = FY1992 ; 
      format month monname3. ; 
      plot sales*month = 1 earnings*month = 2 / overlay 
            frame 
            haxis = axis1 vaxis = axis2 ; 
   run ; 
   quit ;

Il y a d'autres possibilités sous SAS pour obtenir le même résultat notamment en utilisant la fonction BAR ou l'instruction Template de la procédure GREPLAY.

Si vous disposez du module QC, vous pouvez également utiliser les procédures CAPABILITY ou SHEWHART.

Mis à jour le 20 avril 2014 fafabzh6 sas

Il faut utiliser les options graphiques ci-dessous.

Code sas : Sélectionner tout
goptions devmap=winansi keymap=winansi ;

Mis à jour le 20 avril 2014 fafabzh6

On considère un nuage de points résultant du croisement des variables X et Y, sur lequel on souhaite afficher pour chaque point, la valeur d'une troisième variable ID.

• Exemple en utilisant la proc Plot :

Code sas : Sélectionner tout
1
2
3
Proc plot data=work.essai ; 
    plot x*y $ id; 
    run ;

• Exemple en utilisant la proc Gplot :

Code sas : Sélectionner tout
1
2
3
4
5
Proc gplot data=work.essai ; 
    plot x*y; 
    symbol1 pointlabel=("#id"); 
    run; 
    quit;

Mis à jour le 20 avril 2014 fafabzh6 sas

La machine virtuelle JAVA de Microsoft doit être présente sur le PC où un graphique JAVA, créé avec SAS 8, est affiché. Avec SAS 9, le pré-requis a changé : il faut désormais disposer du JRE (Java Runtime Environment), version 1.4.1 au minimum.

Pour rappel, un tel graphique est créé en spécifiant dans son programme :
goptions device=java ;
et en créant un rapport au format HTML ou RTF (ods html ou ods rtf).

Des exemples de graphiques JAVA sont disponibles sur notre site :
http://support.sas.com/rnd/datavisualization/Java.html

Mis à jour le 20 avril 2014 fafabzh6 sas

Utiliser l'option DESCRIPTION dans la ligne de commande PLOT comme suivant :

Code sas : Sélectionner tout
1
2
3
4
5
6
ods html path="c:\a\" body="test.html"; 
proc gplot data=sashelp.class; 
plot weight*height /DESCRIPTION=' '; 
run; 
quit; 
ods html close;

Mis à jour le 20 avril 2014 fafabzh6 sas

Avec l'instruction note. Elle est valide au sein des procédures GBARLINE, GCHART, GCONTOUR, GFONT, GMAP, GPLOT, GPRINT,GRADAR, GSLIDE et G3D. Voici un exemple d'utilisation ci-après où la hauteur du texte, sa position, sa police sont paramétrés.

Code sas : Sélectionner tout
note h=3 c=black j=center move=(31,83)pct f=swissb 'Un exemple de texte';

Mis à jour le 20 avril 2014 fafabzh6 sas

Avec l'instruction AXIS et son option ORDER.

Code sas : Sélectionner tout
Axis1 order=(‘France’ ‘Allemagne’ ‘USA’) ;
Cet axe doit ensuite être utilisé dans la procédure graphique. Haxis=axis1 dans la procédure gplot ou maxis=axis1 dans la procédure gchart.

Mis à jour le 20 avril 2014 fafabzh6 sas

L'astuce consiste à utiliser l'option MOVE, au niveau de la définition du titre, en conjonction avec la taille du texte.
Prenons un exemple, dont le but est d’afficher le titre : Mon 1er graphique.

Code sas : Sélectionner tout
1
2
3
4
5
title1 h=2 f=swiss 'Mon 1' move=(+0,+1) h=1 'er' move=(+0,-1) h=2 'graphique'; 
proc gchart data=sashelp.prdsale; 
 vbar country / sumvar=actual ; 
run; 
quit;

Décomposons cet exemple :
h=2 f=swiss 'Mon 1': la taille du texte est 2. La police est Swiss. Le texte 'Mon 1' est écrit.
move=(+0,+1) h=1 'er': l'écriture du texte est déplacée en hauteur. La taille du texte est divisée par 2. Le texte 'er' est écrit.
move=(+0,-1) h=2 'graphique': l'écriture du texte est re-déplacée à son niveau initial. Le texte 'graphique' est écrit.

Mis à jour le 20 avril 2014 fafabzh6 sas

Pour modifier l'affichage des sous-groupes vous devez utiliser l'option SUBGROUP de l'instruction HBAR et avoir préalablement bien ordonné vos données avec une PROC FORMAT (par exemple).
Ci dessous un exemple de code permettant de faire cette manipulation :

Code : Sélectionner tout
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 ;

Mis à jour le 4 août 2014 fafabzh6

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2020 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.