[ Retour aux Travaux Dirigés de SAS ]
/* Statistiques avec SAS, Corrigé du TD 2 */
/* Jean-Sebastien Roy (js@jeannot.org), 2000 */
/* Définition d'une macro-variable */
%let chemin=//diamant/Data Mi2/sas/stats;
/* Dorénavant, &chemin. sera systematiquement remplacé par D:\SAS\MST
Même entre des "..." mais pas entre des '...'.
*/
/* Definition de la Library 'tables' */
libname tables "&chemin/tables";
/* Monotone de charge de Q0 */
/* On trie la table q0 par puissances (q0) décroissantes */
/* Et on ne garde que q0 */
proc sort tables.q0 q0_decr( q0);
by q0;
run;
/* On numérote les lignes */
/* Lors d'une étape DATA,
_n_ est toujours égal au numéro de la ligne.
SAS ne conserve pas cette variable dite 'automatique'.
Pour la conserver, on l'affecte à une autre variable, ici 'i'
*/
data q0_decr;
set q0_decr;
i=_n_;
run;
proc gplot q0_decr;
format q0 comma15.;
axis1 ( 1);
symbol1 h=0.1cm plus c=black;
title1 h=1 "Monotone de charge";
plot q0*i=1/axis1;
run;
quit;
/* Impression */
goptions winprtm landscape;
proc gplot q0_decr;
format q0 comma15.;
axis1 ( 1);
symbol1 h=0.1cm;
title1 h=1 "Monotone de charge";
plot q0*i=1/axis1;
run;
quit;
goptions win;
/* Utilisation de formats */
/* Lecture du fichier calendrier */
/* De maniere similaire a la commande 'libname',
la commande filename associe un nom (ici 'cal') a un fichier */
filename cal "&chemin/infiles/Angleterre";
/* %include "fichier.sas" execute le contenu de fichier.sas */
%include "&chemin/td2_lecture_cal.sas";
/* Creation d'un variable DATE dans la table q0 */
data q0_1;
set tables.q0;
datepart(dtu); /* La date sans l'heure */
format date ddmmyy10.;
run;
/* Moyenne de q0 par jour */
proc summary q0_1 ;
by date;
var q0;
output q0_date(_type_ _freq_) ;
run;
/* Lien Q0_DATE <-> Calendrier */
data q0_date2;
merge q0_date ( inq0)
cal ( incal);
by date;
if inq0 and incal; /* Informations présentes dans les deux tables seulement*/
run;
/* Définition du format */
proc format;
value $tjour
'D'='Dimanche / F'
'S'='Samedi'
'V'='Vendredi / Veille JF'
'L'='Lundi / Lendemain JF'
'O'='Autre'
;
value jour
1='Dimanche'
2='Lundi'
3='Mardi'
4='Mercredi'
5='Jeudi'
6='Vendredi'
7='Samedi'
;
value $cjour
'4'='Jour Ferié'
'5'='Lendemain de JF'
'3'='Lundi normal'
'0'='Mardi-Vendredi normal'
'1'='Samedi normal'
'2'='Dimanche normal'
'7'='Veille de JF'
'9'='Invalide'
;
run;
/* Affectation du format à la variable */
proc datasets work;
modify cal;
format tday $tjour. wday jour. cday $cjour.;
modify q0_date2;
format tday $tjour. wday jour. cday $cjour.;
run;
quit;
/* Utilisation d'INSIGHT */
proc insight q0_date2 ;
dist q0;
dist tday;
scatter q0*date; /* a colorier */
line q0*date;
box q0*tday;
by tday;
line q0*date; /* rajouter d'autres variables */
dist q0;
run;
/* Travail similaire sur la table pool */
/* Creation d'un variable DATE dans la table pool */
/* Creation d'une variable jour de la semaine dans q0_date */
data pool1;
set tables.pool;
datepart(dtu); /* La date sans l'heure */
format date ddmmyy10.;
run;
data pool2;
merge pool1 ( inpool1) cal ( incal);
by date;
if incal and inpool1;
run;
/* Utilisation d'INSIGHT */
proc insight pool2 ;
dist smp ppp;
scatter q0*smp;
run;