Cours SAS v2

download Cours SAS v2

of 23

Transcript of Cours SAS v2

Objectif du cours : acqurir les principes du langage de programmation SAS

Formation au logiciel SASStatistical Analysis SystemOdile Wolber (CNAM)

Etape DATA- import des donnes - saisie des donnes sous SAS - cration dun fichier texte partir dune table SAS - manipulation des donnes au cours dune tape DATA - chargement et fusion de tables SASOdile Wolber, CNAM, octobre 2003 2

Objectif du cours : acqurir les principes du langage de programmation SAS Etape PROC- imprimer les observations dune table SAS : proc PRINT - trier un fichier selon des cls : proc SORT - afficher des comptages et des pourcentages : PROC FREQ - calculer des statistiques simples : PROC MEANS - calculer des corrlations : PROC CORROdile Wolber, CNAM, octobre 2003 3

Objectif du cours : acqurir les principes du langage de programmation SAS Etape PROC- analyser une variable en dtail : PROC UNIVARIATE - afficher le contenu dune table : PROC CONTENTS - effectuer des oprations globales sur les tables : PROC DATASETS - crer des formats utilisateur : PROC FORMATOdile Wolber, CNAM, octobre 2003 4

Objectif du cours : acqurir les principes du langage de programmation SAS Autre modules SAS- langage matriciel : module SAS IML - gestion de donnes informatiques des SGBD relationnels : SQL - graphiques : SAS GRAPH - macro langage SAS

Les fentres de SAS

Odile Wolber, CNAM, octobre 2003

5

Odile Wolber, CNAM, octobre 2003

6

Deux tapes : DATA et PROC Etape DATASAS possde son propre systme de gestion de bases de donnes. Les donnes sont structures sous forme de tables SAS (DATA SET). Une tape DATA dbute par linstruction : DATA nom_de_table; Si aucune table SAS nest cre (recopie dune table SAS dans un fichier texte) : DATA _NULL_; Ajout, suppression de variables ; fusion de tables SASOdile Wolber, CNAM, octobre 2003 7

Deux tapes : DATA et PROC Etape PROCAnalyse des tables SAS au moyen de procdures (ETAPE PROC) Par exemple : - imprimer les observations dune table - afficher la liste des variables contenues dans une table - obtenir la distribution dune variables - demander le calcul dune moyenne - effectuer une analyse factorielle, une classificationOdile Wolber, CNAM, octobre 2003 8

I. Etape DATATable SAS : matrice croisant en lignes les observations et en colonnes les variables.Exemple : 15 premires lignes de la table SAS RussetObs 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Pays Argentine Australie Autriche Belgique Bolivie Brsil Canada Chili Colombie Costa Rica Cuba Danemark Rp. Dominic. Equateur Egypte gini 86.3 92.9 74 58.7 93.8 83.7 49.7 93.8 84.9 88.1 79.2 45.8 79.5 86.4 74 farm 98.2 99.6 97.4 85.8 97.7 98.5 82.9 99.7 98.1 99.1 97.8 79.3 98.5 99.3 98.1 rent 32.9 . 10.7 62.3 20 9.1 7.2 13.4 12.1 5.4 53.8 3.5 20.8 14.6 11.6 gnpr 374 1215 532 1015 66 262 1667 180 330 307 361 913 205 204 133 labo 25 14 32 10 72 61 12 30 55 55 42 23 56 53 64 inst 13.6 11.3 12.8 15.5 15.3 15.5 11.3 14.2 14.6 14.6 13.6 14.6 11.3 15.1 15.8 ecks 57 0 4 8 53 49 22 21 47 19 100 0 6 41 45 deat 217 0 0 1 663 1 0 2 316 24 2900 0 31 18 2 demo 2 1 2 1 3 3 1 2 2 2 3 1 3 3 3

I. Etape DATATables permanentes / tables temporairesUne table permanente est stocke dans une librairie. La librairie est dfinie par une instruction LIBNAME et assurant la correspondance entre le nom de librairie SAS et le nom physique (rpertoire) de la librairie : libname pays c:\Odile Wolber\Cours SAS; La table temporaire est dtruite la fin de la session SAS en cours : Par exemple, si on veut stocker de faon permanente la table temporaire Russet dans la librairie pays, la syntaxe est la suivante : data pays.Russet; set Russet; run; Odile Wolber, CNAM, octobre 2003 10

Source : Les donnes de Russet La rgression PLS Michel Tenenhaus Editions Technip page 172

Odile Wolber, CNAM, octobre 2003

9

I. Etape DATAImport de donnes : cration dune table SAS partir dun fichier texteSyntaxe : DATA nom_de_table; INFILE fichier_en_entre; INPUT format_de_lecture; RUN; DATA permet de nommer la table SAS crer INFILE indique la rfrence du fichier lire en entre INPUT prcise comment lire les donnes (position de la variable, son type caractre ou numrique - , nom de la variable)Odile Wolber, CNAM, octobre 2003 11

I. Etape DATAImport de donnes : cration dune table SAS partir dun fichier texteOptions de linstruction INFILE FIRSTOBS=numro_dobservation Numro de la premire observation du fichier en entre prendre en compte dans la table SAS cre. OBS=numro_dobservation Numro de la dernire observation du fichier en entre prendre en compte dans la table SAS cre. MISSOVER En cas denregistrements de longueur variable, si toutes les variables de lordre INPUT nont pas t lues, les variables non renseignes sont mises valeur manquante.Odile Wolber, CNAM, octobre 2003 12

I. Etape DATAImport de donnes : cration dune table SAS partir dun fichier texteExemple : Le fichier Russet est initialement un fichier texte stock dans le rpertoire c:\Odile Wolber\Cours SAS\Pays.txt. On cre une table SAS permanente du mme nom, stocke dans le mme rpertoire (librairie SAS pays prcdemment dfinie par une instruction libname). DATA pays.russet; INFILE c:\Odile Wolber\Cours SAS\Pays.txt; ; RUN; ou de manire quivalente, en utilisant linstruction filename : FILENAME russet c:\Odile Wolber\Cours SAS\Pays.txt; DATA pays.russet; INFILE russet; ; RUN;

I. Etape DATAImport de donnes : cration dune table SAS partir dun fichier texte Exemple :Si on utilise les options firstobs= et obs= : DATA pays.russet; INFILE c:\Odile Wolber\Cours SAS\Pays.txt firstobs=2 obs=4; ; RUN; Seules les lignes 2, 3 et 4 sont recopies dans la table SAS pays.russet :Obs 1 2 3 Pays Australie Autriche Belgique Gini 92.9 74.0 58.7 Farm 99.6 97.4 85.8 Rent . 10.7 62.3 Gnpr 1215 532 1015 Labo 14 32 10 Inst 11.3 12.8 15.5 Ecks 0 4 8 Deat 0 0 1 Demo 1 2 1

Odile Wolber, CNAM, octobre 2003

13

Odile Wolber, CNAM, octobre 2003

14

I. Etape DATAImport de donnes : cration dune table SAS partir dun fichier texteInstruction INPUTLinstruction la plus sre consiste prciser la colonne de dbut et la colonne de fin dune variable. On distingue les variables numriques et caractres, en faisant prcder les variables caractres par un signe $. Syntaxe : INPUT nom_de_variable ; Si la variable noccupe quune colonne, la colonne de fin peut tre omise. Exemple :

I. Etape DATAImport de donnes : cration dune table SAS partir dun fichier texte

Instruction INPUTAu fur et mesure de lexcution de linstruction INPUT, un lment virtuel, appel pointeur de colonne est positionn afin de lire la variable suivante. Ce pointeur peut tre dplac avec les instructions suivantes : - INPUT @n dplace le pointeur la colonne n - INPUT +n dplace le pointeur de n colonnes vers la droite - INPUT / dplace le pointeur la ligne suivante Ces instructions posent des problmes lorsque le fichier contient des valeurs manquantes. Cest pourquoi on prfrera prciser les colonnes de dbut et de fin dune variable ( condition toutefois que les enregistrements soient de longueur fixe).Odile Wolber, CNAM, octobre 2003 16

DATA pays.russet; INFILE c:\Odile Wolber\Cours SAS\Pays.txt; INPUT Pays $ 1-13 Gini 15-18 Farm 20-23 Rent 25-28Demo 52 ; Odile Wolber, CNAM, octobre 2003 15 RUN;

I. Etape DATASaisie des donnes sous SASSi les donnes sont saisies sous SAS, elles doivent :- suivre directement ltape DATA - tre prcdes du mot cl CARDS - tre suivies dun caractre ; plac en dbut de ligne.Exemple :

I. Etape DATASaisie des donnes sous SASdata parc; input ZONE HERB $ BOSQUET $ EAU $ HIPPO $; cards; 1 courte oui proche moyen 2 haute oui loigne aucun 3 courte oui proche aucun 4 courte oui proche important 5 courte oui moyenne aucun 6 courte oui proche aucun 7 courte non loigne aucun 8 courte oui moyenne important 9 courte non loigne aucun 10 courte non loigne aucun ; run; Odile Wolber, CNAM, octobre 2003

Odile Wolber, CNAM, octobre 2003

17

18

I. Etape DATAExport de donnes : cration dun fichier texte partir dune table SAS Pour crer un fichier texte partir dune table SAS : - assigner un fichier de sortie par une instruction FILENAME - crer une tape DATA _NULL_ (lobjectif nest pas de construire une table SAS, mais de recopier les lments dune table SA dans un fichier externe) - formater les variables laide de linstruction PUT

I. Etape DATAExport de donnes : cration dun fichier texte partir dune table SASInstruction PUTLinstruction PUT sutilise avec la mme logique que linstruction INPUT. Elle permet dcrire les donnes en utilisant ventuellement un format dcriture.

Syntaxe :PUT ; PUT ;

- PUT @n var1 2. dplace le pointeur la colonne n - PUT +n var 1 2. dplace le pointeur de n colonnes - PUT / var1 2. dplace le pointeur au dbut de la ligne suivante19 Odile Wolber, CNAM, octobre 2003 20

Odile Wolber, CNAM, octobre 2003

I. Etape DATAExport de donnes : cration dun fichier texte partir dune table SASExemple :La table SAS pays.russet est recopie dans un fichier texte.

I. Etape DATAManipulation des donnes au cours dune tape DATA- cration de variables Exemple : partir des variables du fichier pays.russet, on construit les variables suivantes : ln(RENT+1), ln(FARM), Exp(INST-16.3). La variable DEMO tant qualitative, on la remplace par les trois variables indicatrices des tats poltiques : DEMOSTAB, DEMOINST et DICTATUR : DATA pays.russet; SET pays.russet; LRENT=ln(RENT+1); LFARM=ln(FARM); EINST=Exp(INST-16.3); if DEMO=1 then DEMOSTAB=1; else DEMOSTAB=0; ; Odile Wolber, CNAM, octobre 2003 RUN;

FILENAME russet c:\Odile Wolber\Cours SAS\Russet.txt; DATA _NULL_; SET pays.russet; FILE russet; put pays $ @15 Gini @20 Farm@52 Demo; RUN;ou de manire quivalente :

DATA _NULL_; SET pays.russet; FILE c:\Odile Wolber\Cours SAS\Russet.txt; put pays $ @15 Gini @20 Farm@52 Demo; RUN; Odile Wolber, CNAM, octobre 2003

21

22

I. Etape DATAManipulation des donnes au cours dune tape DATA- conversion dune variable numrique en une variable caractre Exemple : la variable DEMO tant qualitative, on veut la remplacer par une variable caractre CDEMO. On utilise linstruction length : DATA pays.russet; SET pays.russet; LENGTH CDEMO $ 1; CDEMO=DEMO; RUN;Odile Wolber, CNAM, octobre 2003 23

I. Etape DATAManipulation des donnes au cours dune tape DATA- Slection de certaines observations : instructions IF et WHERESyntaxe : IF condition THEN OUTPUT; ou IF condition;

Linstruction IF filtre les observations en ne prenant en compte que celles qui vrifient la condition spcifie.Exemple : Dans le fichier pays.russet, on slectionne uniquement les dmocraties :

DATA demo; SET pays.russet; IF demo=1 or demo=2; Odile Wolber, CNAM, octobre 2003 RUN;

24

I. Etape DATAManipulation des donnes au cours dune tape DATADe manire quivalente, on peut utiliser linstruction WHERE : DATA demo; SET pays.russet; WHERE demo=1 or demo=2; RUN; - Suppression de certaines observations : instruction DELETESyntaxe : IF condition THEN DELETE;

I. Etape DATAManipulation des donnes au cours dune tape DATA - Slection de certaines variables : instructions DROP, KEEP et RENAME Ces mots-cls peuvent tre utiliss : - comme option de linstruction DATA ou de linstruction SET - comme instruction part entire

Odile Wolber, CNAM, octobre 2003

25

Odile Wolber, CNAM, octobre 2003

26

I. Etape DATAManipulation des donnes au cours dune tape DATA - Ne stocker quune partie des variables utilises dans ltape DATA : instruction KEEP3 syntaxes possibles : DATA nom_de_table(KEEP=liste_de_variables) ; ou DATA nom_de_table ; SET nom_de_table(KEEP=liste_de_variables) ; ou DATA nom_de_table ; SET nom_de_table ; KEEP liste_de_variables;Odile Wolber, CNAM, octobre 2003 27

I. Etape DATAManipulation des donnes au cours dune tape DATA - Ne pas stocker des variables cres au cours de ltape DATA : instruction DROP3 syntaxes possibles : DATA nom_de_table(DROP=liste_de_variables) ; ou DATA nom_de_table ; SET nom_de_table(DROP=liste_de_variables) ; ou DATA nom_de_table ; SET nom_de_table ; DROP liste_de_variables;Odile Wolber, CNAM, octobre 2003 28

I. Etape DATAManipulation des donnes au cours dune tape DATA - Renommer une ou plusieurs variables : instruction RENAME3 syntaxes possibles : DATA nom_de_table(RENAME=(ancien_nom=nouveau_nom)) ; ou DATA nom_de_table ; SET nom_de_table(RENAME=(ancien_nom=nouveau_nom)) ; ou DATA nom_de_table ; SET nom_de_table ; RENAME ancien_nom1=nouveau_nom1ancien_nomn=nouveau_nomn;Odile Wolber, CNAM, octobre 2003 29

I. Etape DATA- Concatnation et chargement dune table : instruction SETSyntaxe :SET 4 0 0 D=diag(X); print D; 0 5 0 quit; 0 0 7Odile Wolber, CNAM, octobre 2003 65

III. Le langage matricielLes fonctions matriciellesLa fonction VECDIAG permet de crer un vecteur dont les lments sont les lments diagonaux de la matrice argument. Le calcul des vecteurs et des valeurs propres dune matrice seffectue partir des fonctions EIGVEC et EIGVAL.La fonction EIGVAL retourne le vecteur colonne des valeurs propres, tries dans leur ordre dcroissant. La fonction EIGVEC retourne la matrice des vecteurs propres.Odile Wolber, CNAM, octobre 2003 66

III. Le langage matricielLes fonctions matriciellesLa fonction TRACE retourne la trace de la matrice. La fonction DET calcule le dterminant dune matrice. Linverse dune matrice peut tre utilise partir de la fonction INV : Y=INV(X) Le calcul dune puissance dune matrice seffectue partir de loprateur ** : Y=X**

III. Le langage matricielLes rsultats obtenus par la fonction INV ne sont pas toujours trs stables. Ils ne le sont pas non plus lorsque lon calcule une puissance ngative dune matrice. Cest pourquoi pour calculer X ( ngatif), il est prfrable de procder selon les tapes

dcrites ci-aprs :Odile Wolber, CNAM, octobre 2003 68

Odile Wolber, CNAM, octobre 2003

67

III. Le langage matriciel1. Calcul de L, matrice diagonale des valeurs propres de X :PROC IML ; USE nom_de_table1 ; READ ALL VAR {var1 var2 var3} INTO X ; L=DIAG(EIGVAL(X)) ; CREATE nom_de_table2 FROM L ; APPEND FROM L ; CLOSE L ; QUIT ;Odile Wolber, CNAM, octobre 2003 69

III. Le langage matriciel 2. Calcul de L :DATA nom_de_table2 ; SET nom_de_table2(KEEP=COL1-COL3) ; COL1=COL1** ; COL2=COL2** ; COL3=COL3** ; RUN ;

Odile Wolber, CNAM, octobre 2003

70

III. Le langage matriciel3. Calcul de U, matrice des vecteurs propres de X, puis de X = U L U :PROC IML; USE nom_de_table2; READ ALL VAR _ALL_ INTO L; USE nom_de_table1; READ ALL VAR {var1 var2 var3} INTO X; U=EIGVEC(X); X=U*L*U` ; QUIT;Odile Wolber, CNAM, octobre 2003 71

IV. SAS SQLLe SQL (Structured Query Language) est le langage universel de gestion des donnes informatiques des SGBD relationnels.Extraction de donnes Syntaxe : PROC SQL ; CREATE TABLE nom_de_table ( variable1 type1(long1) , variable2 type2(long2) , variable3 type3(long3) , ); QUIT ; Odile Wolber, CNAM, octobre 2003

72

IV. SAS SQLExemple : crer la table PARC avec les variables : - Zone (ZONE), entier sur 2 caractres - Hauteur de lherbe (HERB), caractre (longueur 6) - Prsence de bosquets (BOSQUET), caractre (longueur 3) - Accs leau (EAU), caractre (longueur 8) - Prsence dhippopotames (HIPPO), caractre (longueur 8) proc sql; create table parc( ZONE integer label='zone' format=2., HERB char(6) label='hauteur de l"herbe', BOSQUET char(3) label='prsence de bosquets', EAU char(8) label='accs l"eau', HIPPO char(8) label='prsence d"hippopotames'); quit;Odile Wolber, CNAM, octobre 2003 73

IV. SAS SQLLa commande SELECT La commande SELECT permet informations par une slection :Syntaxe : SELECT variable FROM nom_de_table ou nom_de_vue nom_de_vue> ;Odile Wolber, CNAM, octobre 2003

de

rechercher

des

6; quit;Le rsultat dune requte SELECT est par dfaut affich dans lOUTPUT ZONE HERB ___________________________ 7 courte 8 courte 9 courte 10 courte 11 courte 12 haute 13 courteOdile Wolber, CNAM, octobre 2003 75

IV. SAS SQLOn peut aussi stocker le rsultat dune requte SELECT dans une table SAS : Exemple : on slectionne toutes les variables pour les zones 7 et plus. proc sql; create table extract as select * from parc3 where ZONE>6; quit;

Odile Wolber, CNAM, octobre 2003

76

IV. SAS SQLLa commande WHERE La commande WHERE permet de spcifier un critre de slection. Exemple : crer une table EXTRACT des zones 7 et plus et dont laccs leau contient la chane de caractre loig . proc sql;create table extract as select * from parc3 where ZONE>6 and EAU like '%loig%';

IV. SAS SQLLa clause ORDER BYLa clause ORDER BY permet de trier le rsultat de la requte. Options suivantes de la proc SQL permettent de restreindre le nombre dobservations traites : INOBS=n restreint n le nombre dobservations de chaque table incorporer (les n premires). OUTOBS=n restreint n le nombre dobservations en sortie (les n dernires).

run; On obtient la table EXTRACT suivante :Obs 1 2 3 4 ZONE 7 9 10 12 HERB BOSQUET EAU HIPPO aucun aucun aucun aucun

courte non loigne courte non loigne courte non loigne haute oui loigne Odile Wolber, CNAM, octobre 2003

77

Odile Wolber, CNAM, octobre 2003

78

IV. SAS SQLLa clause ORDER BYExemple : trier la table parc3 par la variable ZONE (ordre descendant) et ne conserver que les variables ZONE, HIPPO, EAU et la dernire observation pour laquelle il existe un bosquet. proc sql outobs=1; select ZONE,HIPPO,EAU from parc3 where BOSQUET='oui' order by ZONE desc; run; Il saffiche dans la fentre OUTPUT :ZONE HIPPO EAU _____________________ 13 Wolber, CNAM, octobre proche aucun Odile 2003

IV. SAS SQLSupprimer les doublons : option DISTINCTElimine les doublons sur les variables HERB, BOSQUET et EAU. Exemple : proc sql; select distinct HERB, BOSQUET, EAU from parc3 order by HERB desc; run; Dans la fentre OUTPUT saffiche le rsultat suivant :HERB BOSQUET EAU haute oui loigne courte non loigne courte oui moyenne Wolber, CNAM, octobre 2003 courte Odileoui proche

79

80

IV. SAS SQLRegrouper les modalits dune variable : la clause GROUP BYLa clause GROUP BY permet de regrouper les modalits dune variable. Cette clause est utilise uniquement lorsque la requte utilise une fonction somme. SELECT fonction (variable) FROM table GROUP BY variable1, variable2 Lexpression HAVING permet doprer sur un sous-ensemble dobservations de la table. Cest lquivalent du WHERE appliqu au groupe. La clause GROUP BY doit toujours prcder une expression HAVING et dfinit la groupe sur lequel lexpression HAVING va oprer. On utilise lexpression HAVING lorsque la requte utilise une fonction de groupe (AVG, COUNT).Odile Wolber, CNAM, octobre 2003 81

IV. SAS SQLExemple : proc sql; select mean(Gini) as Mgini from pays.russet group by Demo having Mgini>70; quit; Regroupement par type de rgime (Demo) et calcul de la moyenne des coefficients de gini. Slection des observations pour lesquelles la moyenne (Mgini) est suprieure 70.Odile Wolber, CNAM, octobre 2003 82

IV. SAS SQLLes fonctionsCes fonctions sont les suivantes : - MEAN, AVG : moyenne - COUNT, N : compte le nombre de valeurs non manquantes - CV : coefficient de variation - MAX : donne la plus grande valeur dune variable - MIN : donne la plus petite valeur dune variable - SUM : somme - VAR : variance

IV. SAS SQLExemple : calculer la moyenne du coefficient de gini, les coefficients minimal et maximal de gini par type de rgime pour la table pays.russet.proc sql; select Demo, avg(Gini) LABEL='Moyenne des coefficients de Gini', min(Gini) LABEL='Coefficient minimal', max(Gini) LABEL='Coefficient maximal' from pays.russet group by Demo; quit;

Syntaxe :SELECT fonction1(variable) , fonction2(variable) , FROM table GROUP BY variable AS permet de donner un nom la variable rsultat lorsque lon cre une table en sortie (CREATE TABLE). LABEL permet dassocier un label la colonne.Odile Wolber, CNAM, octobre 2003 83

On obtient la sortie suivante :Moyenne des coefficients Coefficient Coefficient Demo de Gini minimal maximal 1 63.88667 45.8 92.9 2 74.06364 47 93.8 Odile Wolber, CNAM, octobre 2003 3 75.3 43.7 93.8

84

IV. SAS SQLLexpression whenCette expression permet de changer la reprsentation des donnes en donnant un code chiffr une chane de caractres ou inversement, en donnant un code un intitul plus significatif. Exemple : on recode en binaire la variable HIPPO : 1 si prsence dhippopotames, 0 sinon.proc sql; select *, case when HIPPO='aucun' THEN 0 else 1 end as BIN_HIP from parc3; run;

IV. SAS SQLLes jointures1/ On slectionne communes.PROC SQL ; SELECT a.*, b.* FROM table1 AS a, table2 AS b WHERE a.var1=b.var1; QUIT;

uniquement

les

observations

On obtient la sortie suivante :ZONE HERB BOSQUET EAU HIPPO BIN_HIP 1 courte oui proche moyen 1 2 haute oui loigne aucun 0 3 courte oui proche aucun 0 85 4 Odile Wolber, CNAM, octobre 2003 courte oui proche importan 1

Cette jointure correspond au cas IF INA AND INB du merge en SAS de base.Odile Wolber, CNAM, octobre 2003 86

IV. SAS SQLLes jointures2/ Jointure gauchePROC SQL ; SELECT a.*, b.* FROM table1 AS a LEFT JOIN table2 AS b ON a.var1=b.var1; QUIT;

IV. SAS SQLLes jointures3/ Jointure droite :PROC SQL ; SELECT a.*, b.* FROM table1 AS a RIGHT JOIN table2 AS b ON a.var1=b.var1; QUIT;

Elle correspond au cas IF INA du merge.

Elle correspond au cas IF INB du merge.

Odile Wolber, CNAM, octobre 2003

87

Odile Wolber, CNAM, octobre 2003

88

IV. SAS SQLLes jointures4/ Jointure full PROC SQL ; SELECT a.*, b.* FROM table1 AS a FULL JOIN table2 AS b ON a.var1=b.var1; QUIT;

IV. SAS SQLLes jointures5/ Produit cartsienPROC SQL ; SELECT a.*, b.* FROM table1 AS a table2 AS b; QUIT;

Elle correspond au merge by sans condition.Odile Wolber, CNAM, octobre 2003 89

On fusionne chaque observation de la table A avec chaque observation de la table B. Si A contient na observations et B nb observations, le rsultat contient naXnb lignes.Odile Wolber, CNAM, octobre 2003 90

IV. SAS SQLLes jointures6/ Jointure dune table avec elle-mme Il est possible de faire une jointure dune table avec elle-mme pour obtenir davantage dinformations. Exemple : Nous avons la table EMPLOI avec les variables : - Empnum (numro de lemploy) - Empnom (nom de lemploy) - Emptitre (titre de lemploy) - Numsup (numro du suprieur)EMPNUM 101 201 213 214 401 412 EMPNOM John Betty Joe Jeff Sam Nick EMPTITRE head man. manager respvent respvent manager respvent NUMSUP . 101 201 201 101 401

IV. SAS SQLproc sql; select a.*, b.EMPNOM as SUPNOM, b.EMPTITRE as SUPTITRE from emploi as a, emploi as b where a.NUMSUP=b.EMPNUM; quit;EMPNUM 101 201 213 214 401 412 EMPNOM John Betty Joe Jeff Sam Nick EMPTITRE head man. manager respvent respvent manager respvent NUMSUP . 101 201 201 101 401 SUPNOM John Betty Betty John Sam SUPTITRE head man. manager manager head man. manager92

Construire une table Odile Wolber, CNAM, octobre 2003 avec pour chaque employ le nom de 91son suprieur hirarchique (nomsup) et son titre (titresup).

Odile Wolber, CNAM, octobre 2003

Lunion

IV. SAS SQLLa commande INSERT INTO

IV. SAS SQL

Loprateur UNION est un oprateur ensembliste. Il effectue lunion des rsultats de deux requtes SELECT, cest dire qu partir de deux tables rsultats, il en cre une troisime comportant lensemble des observations des deux tables de dpart, en liminant les doublons parfaits et en triant selon lordre des variables dans la commande select. Exemple :PROC SQL ; CREATE TABLE table3 AS SELECT * FROM table1 UNION SELECT * FROM table2 ; QUIT ; Cette tape correspond dans ce cas : DATA table3 ; SET table1 table2 ; RUN; PROC SORT DATA=table3 noduplicates; BY _ALL_; RUN; Odile Wolber, CNAM, octobre 2003

Cette commande est utilise pour insrer des observations dans une table. Elle ncessite le nom de la table, le nom des variables initialiser et la valeur leur assigner. INSERT INTO table SET variable1=valeur1, variable2=valeur2 Exemple : insrer une observation dans la table parc proc sql; insert into parc3 set ZONE=14, HERB='haute', BOSQUET='non', EAU='loigne', HIPPO='moyen' ; quit;

93

Odile Wolber, CNAM, octobre 2003

94

IV. SAS SQLLa commande INSERT INTOAssocie une clause SELECT, cette commande permet de copier un sous-ensemble dune table dans une autre. La table cible doit exister pralablement, et les types de donnes doivent correspondre de faon trs prcise. Exemple : insrer des observations de la table parc4 (zone 14 20) dans la table parc3 proc sql; insert into parc3 select * from parc4 where ZONE>13; quit;Odile Wolber, CNAM, octobre 2003

IV. SAS SQLLa commande INSERT INTOOn peut galement insrer les valeurs de chaque observation avec linstruction VALUES. INSERT INTO table VALUES (valeur1, valeur2, valeur3) Exemple : insrer 5 observations dans la table parc3 proc sql; insert into parc3 values(15,'haute','oui','proche','moyen') values(16,'courte','non','proche','moyen') values(17,'haute','oui','proche','aucun') values(18,'haute','non','loigne','moyen') values(19,'courte','non','loigne','importan'); quit;Odile Wolber, CNAM, octobre 2003 96

95

IV. SAS SQLLa commande UPDATELa commande UPDATE spcifie le nom de la table qui va tre modifie, suivi dune clause SET dfinissant les modifications apporter, et dune clause WHERE avec le critre prcisant les observations modifier. UPDATE TABLE SET variable1=valeur1, variable2=valeur2 WHERE condition Exemple : remplacer la modalit loigne de la variable EAU par loin : proc sql; update parc3 set EAU='loin' where EAU='loigne'; Odile Wolber, CNAM, octobre 2003 97 quit;

IV. SAS SQLLa commande DELETECette commande consiste en une clause DELETE FROM spcifiant le nom de la table concerne, et dune clause WERE avec le critre prcisant les observations supprimer. Exemple : dtruire les observations des zones 14 et plus. proc sql; delete from parc3 where ZONE>13; quit;Odile Wolber, CNAM, octobre 2003 98

V. SAS GRAPHGchart : trac dhistogrammes, de camemberts, de graphiques toils Gplot : graphiques deux dimensions Gmap : fonds de cartes G3d : surfaces ou nuages de points en trois dimensions Les graphiques sont stocks dans des catalogues graphiques que lon pourra consulter nouveau en utilisant la procdure greplay. Tout texte ou figure gomtrique complmentaires peuvent tre rajouts sur un graphe en les dcrivant dans une table SAS spciale dite dannotation : Annotate data set.Odile Wolber, CNAM, octobre 2003 99

V. SAS GRAPHInstructions gnrales pour la construction des graphiques Structure du programme dtaille dans le polycopi de cours :goptions . ; /*orientation du graphique, bordures, dimensions, couleurs, police de caractre*/ title1. ; /*dition de titres dans les graphiques*/ titlei. ; footnote1 ; /*notes de bas de graphique*/ footnotei ; legend1 ; /*lgendes*/ legendi ; axis1...; /*options sur les axes*/ axisi...; symbol1...; /*uniquement dans gplot*/ symboli ; pattern1 ; /*instructions sur les surfaces*/ patterni ; Odile Wolber, CNAM, octobre 2003 100

V. SAS GRAPHStructure du programme (suite) : data annotate ; /*pour crer les instructions qui */ /*permettent dcrire lintrieur du graphique*/ run ; proc gplot data= .gout= ; plot y*x=n/; run ; gout : envoi dans un catalogue graphique y : axe des ordonnes x : axe des abscisses n : renvoi un numro de symboleOdile Wolber, CNAM, octobre 2003 101

V. SAS GRAPH

Annotate data setUne table dannotations, dfinie lors dune tape data, est une table SAS contenant les descriptifs dun ensemble de graphiques qui viendront se superposer aux rsultats des procdures prcdemment dcrites (gchart, gplot,). Elle contient ainsi un certain nombre de variables de positions, de descriptions et de texte.

Odile Wolber, CNAM, octobre 2003

102

V. SAS GRAPHAnnotate data set Annotate data set -

V. SAS GRAPHle systme de coordonnes pour le trac (se combine avec size) : hsys unit utiliser pour la taille du texte xsys systme de coordonnes pour x ysys systme de coordonnes pour y zsys systme de coordonnes pour z Ces variables dont les noms sont prdfinis sont des variables caractres ; leurs valeurs doivent tre rentres comme telles. les variables dattribut : color couleur du texte style police de caractre text contient le texte crire ou le nom de la variable du fichier qui contient les diffrents textes comme autant de valeurs size dtermine la hauteur du texte position dun texte par rapport au point (cal gauche, centr) line type de ligne (parOdile Wolber, CNAM, octobre 2003 dfaut, continue). 104

Les variables de la table dannotation ont des noms prdfinis. Les plus usuelles sont : - les variables qui dfinissent les lments de dessins : function. function indique ce quil faut tracer : bar, draw, frame, pie, symbol, label - les variables de position qui spcifient les coordonnes des points o les tracs doivent tre faits et le systme de coordonnes : x abscisse du point y ordonne du point z si 3 dimensionsOdile Wolber, CNAM, octobre 2003 103

-

Exemple :

V. SAS GRAPHAnnotate data setObs x y xsys ysys text

V. SAS GRAPH

Reprsentation des resultants dune analyse des correspondances des donnes de parc3 partir dun fichier de sortie de proc corresp.data anno; set corr1(keep=_TYPE_ _NAME_ dim1 dim2); x=dim1; y=dim2; xsys='2'; ysys='2' ; if _TYPE_='OBS' then do; text=_NAME_; size=0.7; color='b1'; style='hwdmx010'; output; end; if _TYPE_='VAR' then do; text=_NAME_; size=0.7; color='b1'; style='hwdmx011'; output; end; label x='dimension 1' y='dimension 2'; keep x y text xsys ysys size color style ; Odile Wolber, CNAM, octobre 2003 run;

size 0.7 0.7 0.7 0.7 0.7 0.7 0.7

color b1 b1 b1 b1 b1 b1 b1

style hwdmx010 hwdmx010 hwdmx010 hwdmx011 hwdmx011 hwdmx011 hwdmx011

1 -0.15047 -0.00000 2 0.82759 0.00000 3 0.93777 0.00000 ... ... ... ... ... ... ... 14 -0.28133 0.00000 15 0.89370 0.00000 16 -0.55856 0.96462 17 -0.55856 -0.32154

2 2 1 2 2 2 2 2 3 ... ... ... ... ... 2 2 HERB 2 2 BOSQUET 2 2 EAU 2 2 HIPPO

Dans les versions antrieures de SAS, lenrichissement des graphiques tait difficile : tout devait tre programm, en particulier partir des fichiers annotate. Maintenant, la prsentation peut tre trs soigne en utilisant de faon conviviale lditeur graphique de SAS.105 Odile Wolber, CNAM, octobre 2003 106

Procdure gchart

V. SAS GRAPHProcdure gchart

V. SAS GRAPHIl est important de spcifier loption discrete pour les variables qui ont t recodes par la procdure proc format, sinon le programme essaiera de crer des classes. Lorsque la variable principale est une variable numrique continue, on peut laisser SAS crer les classes reprsenter ; il faut spcifier alors combien de classes retenir, par loptions levels= .

La procdure proc gchart a de nombreuses options de reprsentation : - block barres 3 dimensions - vbar histogramme barres verticales - hbar histogramme barres horizontales - pie camemberts - star graphiques toils Syntaxe : proc gchart ;Appel de loption de trac (exemple barres verticales) :

vbar variables reprsenter > ; Odile Wolber, CNAM, octobre 2003 result1 = 19 %let var2= Test; %let longueur2=%length(&var2); %put result2=&longueur2; octobre=> result2 = 4 Odile Wolber, CNAM, 2003

132

VI. Le macro langage SASLa fonction %LENGTH Exemple :%let var3=%str( Test ); %let longueur3=%length(&var3); %put result3=&longueur3; => result3 = 22 %mend; %valeur; La macro-fonction %LENGTH ignore les blancs externes aux macroexpressions. Cest pourquoi result2 vaut 2. En revanche, tous les espaces contenus entre deux caractres dune macro-expression sont comptabiliss. Pour que les espaces externes une macro-expression soient pris en compte, il est ncessaire dutiliser les macros-fonctions de quoting. Dans lexemple prcdent, la macro-fonction %STR est utilise pour pouvoir tenir compte des espaces externes la valeur Test. Cest Odile 133 pourquoi result3 vaut 22. Wolber, CNAM, octobre 2003

VI. Le macro langage SASLa fonction %SCAN La macro-fonction %SCAN extrait un mot (macro-expression) spare par deux dlimiteurs dans une macro-expression. Syntaxe : %LET retour=%SCAN(argument, nime,) ; Exemple :%let LF=1-2 1-3 ; /*liste de plans factoriels*/ %let I=1 ; /*nombre de plans factoriels reprsenter*/ %do %until(&LM=0); %let LM=%length(%scan(&LF,&I," ")); %let I=%eval(&I+1); %end; %let NPLANS=%eval(&I-2); %do I=1 %to &NPLANS; %let P&I.AXH=%scan(%scan(&LF,&I," "),1,"-"); %let P&I.AXV=%scan(%scan(&LF,&I," "),2,"-"); %let P&I=%scan(%scan(&LF,&I," "),1,"-")_%scan(%scan(&LF,&I," "),2,"-"); Odile Wolber, CNAM, octobre 2003 134 %end;

VI. Le macro langage SASLa fonction %SUBSTRLa macro-fonction %SUBSTR permet dextraire une sous-chane de caractres dune macro-expression. Exemple : la macro suivante extrait les deux derniers caractres dun mot : %MACRO exemple; %macro Extcar(mot) ; %substr(&mot,%eval(%length(&mot)-1),2) %mend; %let period=annee88; %let annee=%Extcar(&period); %put &annee; %mend; %exemple; Odile Wolber, fentre Output. => Le rsultat 88 saffiche dans laCNAM, octobre 2003

VI. Le macro langage SASLa fonction %UPCASELa macro-fonction %UPCASE transforme une expression en majuscule. Exemple : %put %upcase(minuscules); Le rsultat est le suivant : MINUSCULES

La fonction %STRLa macro-fonction %STR empche le macro-langage dinterprter les caractres de largument. Exemple : %LET var=%STR(or) ; empche linterprtation de la valeur var : or comme oprateur logique.135 Odile Wolber, CNAM, octobre 2003 136

VI. Le macro langage SASLa fonction %NRSTRLa macro-fonction %NRSTR va encore plus loin que la macro-fonction %STR. Toute rfrence une macro variable (&) ou macro-programme ou fonction (%) est ignore.

Exemple :%let var1=A;%put &var1; %let var2=%str(&var1*B);%put &var2; %let var3=%nrstr(&var1*B);%put &var3; Le rsultat est le suivant : A A*B &VAR1*BOdile Wolber, CNAM, octobre 2003 137