-
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
1/31
Apprentissage Statistique
SAS 9.4 sous linuxLogiciel hermtique pour systme ouvert
PHILIPPEBESSE
4me anne GMM - MMS
Attentionce cours est dense, la lecture de ce document ne suffira pas la bonne comprhension des outils qui y sont dcrits de faon
synthtique. La participation active aux TDs est indispensables lacquisition des comptences incontournables pour une utilisationraisonnable et raisonne de ce logiciel fort complexe.
quipe de Statistique et ProbabilitsInstitut de Mathmatiques de Toulouse UMR CNRS C5219
Dpartement Gnie Mathmatique et Modlisation
Institut National des Sciences Appliques de Toulouse 31077 Toulouse cedex 4.
1
http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
2/31
1 Introduction au logiciel SAS
Introduction au logiciel SAS
Rsum
Ces vignettes proposent une introduction lmentaire un usageclassique du logiciel SASpour lancer des analyses statistiques. Lob-
jectif est volontairement restreint aux commandes et procdures de
base disponibles dans la version de la licence acadmique de SAS
correspondant galement aux usages les plus frquents dans les
grandes entreprises. Sont donc concerns : SAS/Stat, SAS/Graph et
lAnalyse interactive de donnes.
Plan du cours :
Introduction
Gestion des donnes et procdures lmentaires
Graphes haute rsolution Macros-commandes
Bases de donnes
Avant propos
Le systme SAS est, sinon le logiciel de traitement de donnes le plus com-plet ni le plus rpandu, celui qui traite quotidiennement le plus gros volume dedonnes. Il a acquis, depuis sa mise en route au dbut des annes 60, une situa-tion dominante dans beaucoup de secteurs dactivits. En France, les grandes
entreprises de lnergie et administrations : INSEE, EDF, GDF,..., toute lin-dustrie pharmaceutique lont adopt ainsi que les entreprises du tertiaire im-pliqus dans la gestion volumineuse de bases clientles (banques, assurances,marketing, VPC...). Afin dafficher une diversification de ses activits, depuisde nombreuses annes, SAS ne signifie plusStatistical Analysis Sytem ; le cal-cul statistique est devenu accessoire au regard des tches dingnierie globaledes systmes dinformation.
Historiquement, SAS a suivi lexpansion des sites IBM sur lesquels il a tconu et conserve, de cet environnement initial, les caractristiques fondamen-tales : complexit, lourdeur, cot mais aussi puissance et efficacit. SAS Insti-
tute, a en effet adopt la stratgie dIBM pour fidliser ses clients et sattache
suivre le grand principe de la compatibilit verticale ; toute nouvelle versiondu logiciel est cense accepter les applicatifs conus avec les versions ant-rieures. Cela semble premire vue positif pour les utilisateurs mais, en undemi-sicle de dveloppement, ceci a aussi des consquences trs nfastes surla clart, la cohrence, la souplesse du ou plutt des langages spcifiques celogiciel. Son apprentissage est donc long, fastidieux si lon veut en matriserles subtilits. Son utilisation ne se justifie que dans un environnement o les be-soins en statistiques et le volume des donnes traites sont considrables et quidispose de ressources financires consquentes : outre le cot de location dulogiciel, il faut prendre en compte les salaires des statisticiens professionnelset spcialistes qui sauront dvelopper et maintenir les applications spcifiquesncessaires aux diffrents services de lentreprise. Ce sont les raisons qui fontque de nombreux services de Recherche et Dveloppement lui prfre un outilde type libre accs comme R.
1 IntroductionLe systme SAS est un ensemble de modules logiciels pour la gestion et
le traitement statistique des donnes. A travers diffrents types dinterfacesutilisateur. Il permet lcriture de Programmes SASqui excutent :
les saisies, importations, interrogations, manipulations, fusions, transfor-mations de donnes ;
les ditions dtats, tableaux de bord, de rapports, numriques et gra-phiques;
les analyses statistiques, modlisation, prvision ; des applications spcifiques dfinies sous forme de macro-commandes
pouvant tre pilotes par menus ou partir dun navigateur ; les ditions plus ou moins automatises de rapports et pages web.
Depuis la version 8, SAS propose des solutions: analyse guide des donnes,analyse marketing,Prvision de sries chronologiques... qui sont autant den-vironnements de travail associs une interface graphique spcifique et uneproblmatique. Ils permettent un traitement de linformation sans crire uneligne de programme. Les modulesInsight(Analyse interactive des donnes) et
Enterprise Minersont trs labors en ce sens. Il serait certes possible, en pre-mire approche, de se contenter de cette utilisation lmentaire mais lusagemontre que ces solutions sont ncessairement limites et quun usage pro-
http://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-2data.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-3graph.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-4macros.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-5sql.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-5sql.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-4macros.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-3graph.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-2data.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
3/31
2 Introduction au logiciel SAS
fessionnel, associ des contraintes spcifiques, rend incontournable lusagedune programmation basique.
1.1 Table SAS
Aprs saisie ou importation en provenance de fichiers ASCII ou dun SGBD
(Systme Relationnel de Gestion de Base de Donnes), les donnes sont grespar SAS sous la forme dun SAS Data Setnomm par la suiteTable SAS.
Unetable SASest lassociation dun ou deux fichiers binaires contenant lesdonnes et leur descriptif :
Nom de la table Commentaire ou label Date et heure de cration Nombre dobservations
et, pour chaque variable : Nom abrg Signification ou label Type Type de codage Longueur Position
1.2 Programme SAS
Unprogramme SASest un enchanements dtapesde gestion des donnes(Data Step) et dappels de procdures, dcrivant, dans une syntaxe souventspcifique chaquemodule, les traitements raliser sous le couvert doptions
prises par dfaut ou explicitement dfinies. Les diffrentes tapes ou proc-dures communiquent entre elles exclusivement par lintermdiaire de tablesSAS, permanentes ou temporaires, et avec lextrieur par des tables SAS oudes fichiers textes usuels en un format quelconque.
/* exemple de programme SAS */
/* Lecture, impression et tabulation de donnes. */
data Europe;
infile "edc.fun.overseas";
input date $ 1-7 dest $ 8-10 boarded 11-13;
proc print data = europe;
proc tabulate data = europe;
class date dest;
var boarded;
table date, dest*boarded*sum;
run;
1.3 Les modules et leur documentation
Toutes les documentations en anglais ainsi que des tutoriels sont disponiblesen ligne. Des items sont spcifiques la version de SAS utilise (9.3), au sys-tme dexploitation et chacun des modules offerts la location. Ceux les plusutiliss concerns par ce cours sont : Base SAS, SAS/STAT, SAS/GRAPH.
Base SAS Cest la documentation de base et le manuel de rfrence pourtous les traitements de gestion des donns : ltape Data, la syntaxe de sescommandes, la gestion des tables SAS, lditeur de texte des programmes.Cet item contient galement la description des procdures lmentaires (Pro-cedures Guide), du macro langage pour lcriture de macro-commandes, desoutils de production automatique des rapports et graphes (ODS) en html, desrequtes SQL de bases de donnes, de production de documents XML...
SAS Procedures Fonctions et syntaxes de toutes les procdures lexcep-tion des procdures statistiques plus complexes : statistiques lmentaires,frquences, graphiques basse rsolution, impression, tri, tabulation, transpo-
sition,...
SAS/Stat Users Guide. Toutes les procdures statistiques et la grande va-rit de leurs options : tous les modles de rgression, les classifications, lesdures de vie, la statistique non-paramtrique, les analyses multidimension-nelles.
SAS/Graph Software Dtails des possibilits graphiques en haute rsolu-
tion et de leurs innombrables options.
http://wikistat.fr/http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
4/31
3 Introduction au logiciel SAS
SAS/IML Le module de calcul matriciel interactif intgr est un langageinterprt, comme Matlab ou R. Il traite des objets matriciels avec la syntaxedun langage volu (PL1). Il est adapt la mise en place rapide de mthodesoriginales construites partir des oprateurs classiques de lalgbre linaire.Trs rarement utilise dans lindustrie, il nest pas dcrit dans ce document.
2 Modes dutilisation de SAS
2.1 Sous linux
Excution diffre
Cest la meilleure faon dexcuter des programmes oprationnels maislongs sans rester coller son cran. Ils sont excuts en diffr par exempleavec la commandeat. Il suffit de taper
sas nom_de_fichier.sas -fsdevice x11.motif &
o nom_de_fichier.sas est un fichier contenant un programme SAS ;les rsultats sont alors regroups dans le fichier nom_de_fichier.lsttandis que le compte rendu de lexcution ainsi que les messages derreursse trouvent dans le fichier nom_de_fichier.log. Il existe de nombreusesoptions : type de terminal, taille mmoire.... Le caractre & permet de re-prendre la main avant la fin de lexcution qui se droule en arrire plan etainsi, ventuellement, de tuer le processus sas en cas de problmes.
Mode interactif
Taper simplement la commande sas & qui lance SAS en tche de fond afinde pouvoir ractiver, si ncessaire, la fentre du processshell(xterm).
2.2 Sous windows
Pour lessentiel, une fois que SAS est lanc partir du menu des pro-grammes ou partir de son icne, le fonctionnement est le mme quen modeinteractif sous Linux. Larborescence des rpertoires est videmment spci-fique au systme dexploitation mais aussi aux paramtres de configurationde linstallation. Des facilits sont apportes par Windows comme le copier /
coller des graphiques entre les fentres SAS et un traitement de texte.
2.3 Les fentres
Cinq fentres apparaissent alors lcran avec une ergonomie relativementintuitive mais, trs sophistique et ouvrant sur de trs nombreuses possibilits,il serait inefficace de vouloir la dcrire de faon exhaustive. Elle est dcouvriren fonction des besoins.
Chaque fentre contient une barre de menus droulants contextuels :
Fichier pour lire ou crire dans des fichiers extrieurs SAS, importer ou ex-porter des donnes dans diffrents formats, quitter SAS (exit) en fermanttoutes les fentres.
dition pour grer le texte (slectionner, couper, copier, coller...),
Affichage pour rendre active une des fentres.
Outils pour accder des utilitaires de gestion de graphiques, de tables sas, derapports, dimages, de textes et pour configurer les options personnalisant
son environnement (couleurs, polices...).Solutions pour excuter les modules spcifiques (sils ont t pays !) pour laralisation de tableaux de bord, le dveloppement dapplications.
Fentre Pour changer lorganisation des fentre ou en slectionner une spci-fique.
Aide pour accder laide en ligne dtaille ainsi qu un tutoriel (Gettingstarted with SAS Software).
Ces fentres sont :
diteur est un diteur de texte rudimentaire 1,pour entrer et modifier les pro-
grammes SAS avant den demander lexcution. Outre les commandes duchoix dition du menu, il faut savoir que pour :
Sortie affiche tous les rsultats (texte) produits par lexcution des diffrentesprocdures. Les graphiques haute rsolution apparaissent dans une fentrespcifique.
Journal affiche le compte rendu de la bonne excution et les messages der-reur. Elle est la premire fentre consulter.
1. Il est vivement recommander douvrir un diteur fiable et entrer le programme avant de lasoumettre par simple copie de la souris. Cela permet dviter des mauvaises surprises : caractres
spciaux cachs, crash de SAS...
http://wikistat.fr/http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
5/31
4 Introduction au logiciel SAS
Explorateur affichage arborescent des librairies (rpertoires) et tables grespar SAS.
Rsultas permet de grer lensemble des rsultats (textes et graphiques) defaon arborescente. insrer n lignes il faut taper in dans la zone des numros de lignes,
supprimer une ligne il faut y taperd
et, pour supprimer un block, entrerddsur la premire et la dernire ligne du bloc, passer alternativement du mode insertion au mode superposition il faut
taperx. Enfin, le menu spcifique Excuter permet de lancer lexcution
(comme < F3 >) du programme de lditeur ou celui du tampon copiavec la souris et de rappeler (comme< F4 >) le programme excuterdans la fentre
Dautres fentres souvrent par exemple lors de la production de graphes ou au
lancement de modules interactifs spcifiques.Attentionaux courants dair, il est important de grer correctement la multi-
tude des fentres qui remplissent lcran et surtout de les refermer dans le bonordre afin dviter de se retrouver bloqu, par exemple sur unpopupqui attendune rponse.
2.4 Bibliothques
Ce sont, du point de vue du systme dexploitation, les rpertoires dans les-quels SAS gre les fichiers et tables SAS de faon temporaire, le temps dunesession ou excution du programme, ou permanente.
SasUser : bibliothque permanente cre par dfaut. Les tables de cette bi-bliothque sont nommes sasuser.nomtab.
Work : bibliothque contenant les tables temporaires cres par dfaut parles diffrentes tapes et procdures. Elles sont effaces la fin de lasession ou de lexcution du programme. Les tables sont nommeswork.nomtabou plus simplement de faon implicite : nomtab.
SasHelp contient un groupe de catalogue permettant le fonctionnement pardfaut dune session SAS, les donnes servant dexemples et toute laideen ligne.
Maps contient les tables de donnes gographiques (fonds de carte).
Plutt que dutiliser toujours la librairie SasUser, il est possible de dfinir sapropre librairie (ou rpertoire) de tables permanentes (commandelibname).
3 Commandes globales
Cette section aborde quelques lments de programmation SAS. En plus desdeux types de structures dj cits (tape data et procdures), certaines com-mandes peuvent intervenir tout moment afin de prciser ou modifier certainesoptions. Elles restent actives durant toute la session ; voici les principales.
3.1 Rfrencement
libname libref SAS-data-library;Les rpertoires (unix ou windows) contenant des bibliothques de tablesSAS autres que sasuser (par dfaut) doivent tre allous avant leurutilisation mentionnant cette rfrence logique.
filename fileref external-file;Un fichier extrieur SAS (fichier ASCII) peut galement tre rfrenc.
3.2 Mises en formes des sorties
Commentaires Tout texte sous la forme : * texte ; ou /* texte */ estignor de SAS et permet dexpliciter le fonctionnement dun programme.
options liste doptions;permet de spcifier certains paramtres : obs=n limite le nombre dobservations traiter pour tester par exemple
un programme,
linesize=n fixe le nombre de caractres par ligne en sortie, pagesize=n fixe le nombre de lignes par page, date|nodateprsence ou absence de date en haut de page, number|nonumberprsence ou absence de numrotation des pages, pageno=n fixe le numro de la premire page.
titlen titre;permet de faire imprimer jusqu n = 10lignes de titre sur chaque pageen sortie, par dfaut, la premire ligne contient : The SAS System,
footnoten note de bas de page;permet de faire imprimer jusqu n = 10notes de bas de page sur chaque
page en sortie.
http://wikistat.fr/http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
6/31
5 Introduction au logiciel SAS
Options usuelles :
options linesize=75 pagesize=66 nodate number;
title "Mon titre";
footnote "Note de bas de page";
3.3 Production de rapports
Il est possible depuis la version 8 de produire directement des sorties dansun format standard afin de les introduire sans un traitement de texte (.rtf) ouune page web (.html). Cest le systme ODS (open delivery system).
ods rtf body="nomfichier.rtf";
/* Programme SAS */
ods rtf close;
Remplacerrtfparhtml, ps, pdffournit dautres formats de sortie.La version 9 permet galement la sortie de graphiques sur le mme principe.
Ils sont de bonne dfinition et directement produits pas les procdures sta-tistiques (princomp, anova, corr, reg, glm...) mais leurs optionssont contraintes. Ces possibilits seront abordes au momment de lutilisationde ces procdures.
4 Analyse interactive des donnes
A notre grand regret, le module SAS/Insight danalyse interactive des don-
nes nest plus maintenu dans SAS partir de la version 9.4. Lintroduction ce module pour trs pratique et trs efficace pour faire de lexploration efficacede donnes est en consquence supprime. On peut penser que la stratgie deSAS consiste favoriser le dveloppement dun autre produit quivalent : JMPmais qui est plus compliqu mettre en uvre et puis cest un autre logiciel !Encore une raison pour utiliser plus systmatiquement lopen sourceR.
http://www.math.univ-toulouse.fr/~besse/Wikistat/pdf/st-tutor1-start-R.pdfhttp://www.math.univ-toulouse.fr/~besse/Wikistat/pdf/st-tutor1-start-R.pdfhttp://www.math.univ-toulouse.fr/~besse/Wikistat/pdf/st-tutor1-start-R.pdfhttp://wikistat.fr/http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
7/31
1 SAS de base : gestion des donnes et procdures lmentaires
SAS de base : gestion des donnes et
procdures lmentaires
RsumDescription des commandes (module SAS de base) les plus utiles
de ltapedataet principales procdures lmentaires pour crer,
transformer, normaliser, concatner, fusionner, transposer, trier des
tables SAS. Procdures de calcul des statistiques lmentaires.
Retour auplan du cours.
1 Introduction
Le systme SAS offre un trs large ventail de traitements permettant das-
surer toutes les fonctions de gestion des donnes quun statisticien peut tre
amen mettre en uvre. Cette richesse est aussi source de complexit. Nous
nous contenterons de dcrire les exemples les plus standards. Ces traitements
sont pris en charge par les tapesdata(data step), qui reconnaissent un lan-
gage de programmation proche de PL/1 1, et quelques procdures spcifiques.
Unprogramme SASse dcompose en :
1. une (ou des) tape(s)data,
2. une (ou des) appels des procdures (proc).
Ces deux parties sont gnralement indpendantes, il est donc inutilement co-teux de r-excuter ltape data, dont les rsultats sont stocks dans une table
SAS (permanente ou temporaire), chaque mise au point des procdures qui
suivent.
Les commandes lmentaires :
proc print;
run;
1. Cr par IBM dans les annes 70s dans lespoir de remplacer la fois le Fortran et leCoboL ; ce fut le premier langage structur. Le dploiement conjoint dUnix et du langage C a t
fatal au PL/1.
permettent de vrifier dans la fentre sortiela bonne constitution de la der-
nire table SAS cre.
2 tape Datade cration dune table
2.1 Lecture dune tableLobjectif est de construire une table SAS dans le cas de figure le plus usuel
o les donnes sont contenues dans un fichier texte (ascii) provenant dun di-
teur, dun autre logiciel statistique ou encore dun gestionnaire de bases de
donnes. Les donnes peuvent galement tre directement saisies au clavier
(SAS/Insight) ou incluses au programme SAS (commande include card).
Enfin, SAS peut lire tout autre format de fichier que ceux succinctement d-
crits ci-dessous (articles de longueur variable, binaire,.. . ) sur tout support mais
cest vite compliqu !
syntaxe
data table-sas ;
infilefileref ou nom-de-fichier ;
inputliste de variables et spcifications ;
Options
La liste des variables dfinit chaque identificateur ; il est suivi du caractre
$ pour prciser, ventuellement le type alphanumrique de la variable. Il
est fortement conseill de dclarer chaque variable qualitative de type alpha-
numrique.
dlm= ; si le dlimiteur entre les valeurs est un ; ou 09x pour un
caractre de tabulation,
dsddeux dlimiteurs successifs sont interprts comme une valeur man-
quante, sinon insrer un .,
lrecl si la ligne est trs longue, majorant du nombre de caractres dun
enregistrement,
firstobsnumro de la ligne laquelle commencer la lecture,
obsnumro de la dernire ligne lire.
http://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
8/31
2 SAS de base : gestion des donnes et procdures lmentaires
2.2 Lecture en format libre
Les donnes associes une unit statistique sont spares par des blancs ou
tout autre caractre dlimiteur spcifi dans loption dlm ( ; : ,.. . ) ; les units
sont spares par des retours la ligne. Si les lignes du fichier en entre sont
trop longues, dpassant la valeur par dfaut, elles sont tronques en lecture. Il
est ncessaire de dclarer un majorant de cette longueur dans loption lrecl.
Une observation par ligne
Chaque observation est dcrite par une ligne du fichier.
data sasuser.fich1;
infile ~/data/fich.dat dlm=;;
input var1 var2 $ var3;
run;
Attention, si une donne manque dans le ficher pour satisfaire le nombrede variables, SAS poursuit la lecture sur la ligne suivante sans prvenir. Il est
primordial de toujours vrifier la bonne lecture des donnes. Le cas chant,
une donne manquante est code par un point ..
Une observation sur plusieurs lignes
Chaque unit statistique est dcrite sur n lignes du fichier. Plusieurs dcla-
rationsinputou des caractres "/" permettent de prciser le dcoupage.
data sasuser.fich1;
infile ~/data/fich.dat dlm=;;input var1 var2 $ var3 /
var4 $ var5 var6;
run;
Plusieurs observations par ligne
Le double caractre "@@" a pour effet de maintenir un article dans le buffer
de lecture jusqu ce quil soit compltement lu.
data sasuser.fich1;
infile ~/data/fich.dat;
input var1 var2 $ var3 @@ ;
run;
Lorsque le volume des donnes est trs rduit, celles-ci peuvent tre int-
gres au programme avec la commandecards:
data sasuser.fich1;input var1 var2 $ var3 @@ ;
cards;
1.5 A 55 2.4 B 44 2.7 B 61 2.3 A 48
;
run;
Attention la place du dernier point-virgule.
2.3 Lecture formate
Le format libre ci-dessus nest plus utilisable lorsque, pour des raisonsdconomies despace disque, les donnes sont colles ; il faut alors indiquer
explicitement, la suite du nom de chaque variable, les positions (ou champs)
concerns.
data sasuser.fich1;
infile ~/data/fich.dat;
input var1 1-12 var2 $ 13-18 var3 19-25;
run;
2.4 Importation / exportationLes donnes peuvent tre directement importes partir dautres formats car
issus dautres logiciels comme Excel si le module SAS/Access est implment
pour pouvoir accder ce type de format. Sinon seuls certains type de fichier
sont accessibles comme ceux .csv. Cest le rle de la procdure import
dont voici un exemple dutilisation. Le fichier .csv contient une premire
ligne avec les noms des variables, les valeurs sont spares par des "," et la
marque dcimale est le point. De manire rciproque, une table SAS peut tre
exporte dans un format donne, texte (ascii) ou Excel.
proc import datafile="nom-de-fichier.csv"
http://wikistat.fr/http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
9/31
3 SAS de base : gestion des donnes et procdures lmentaires
out=sasuser.table-sas dbms=dlm replace;
getname=yes;
datarow=2;
run;
/* traitements*/
proc export data= sasuser.table-sas
outfile="nom-de-fichier2.xls"
dbms=excel;
De faon plus labore, laprocdure SQLautorise linterrogation de bases
de donnes (Oracle, Access, MySQL...) en relation avec le module SAS/Ac-
cess.
3 tape datade transformations
3.1 Fonctionnement
Ltape data est capable dinterprter un langage de programmation volu
qui, par sa syntaxe, est proche de PL/1. On y retrouve les mmes structures :
if, then, else, do. La diffrence fondamentale est quune tape data
peut tre assimile, en gnral, une lecture de la table traiter. Elle inclut
implicitement une boucle considrant chacune des observations de la premire
la dernire dune table ; une variable du langage estune colonne ou variable
statistique.
Syntaxe
La syntaxe habituelle est la suivante :data table_out ;
set table_in ;
. . . instructions ;
run ;
Chaque observation ou ligne de table_inest lue, transforme par excu-
tion des instructions puis enregistre sur table_out. Pardfaut, toutes
les variables de table_in sont considres et recopies sur table_out
ainsi que celles qui ont t cres par les instructions mais il est possible
den laisser tomber (drop) ou de nen conserver (keep) que certaines.
Keepet Drop
Ces commandes peuvent apparatre comme des options des commandes
data,set ou dautres procdures :
data table_out (drop=var1 var2) ;
set table_in (keep=var1 var2 var3) ;
ou encore comme commandes dune tape data :
keep|drop var1 var2
Lutilisation dedropoukeepdpend du nombre relatif de variables limi-
ner par rapport au nombre conserver.
3.2 Fonctions
Le langage reconnat les expressions arithmtiques usuelles, sait grer des
constantes numriques ou alphanumriques (constante) et des varia-
bles qui sont enregistres sur table_out moins davoir t limines
(drop, keep). Il reconnat, de plus, la plupart des fonctions mathmatiques
usuelles (round, sin, log, sqrt,...), les fonctions de gestion de
chanes de caractres (lenght, scan, substr,...), celles spcifiques
aux diffrentes lois de probabilits (quantiles) et dautres usage plus statis-
tique (sum, mean, min, max, var, std,...). Ces dernires sap-
pliquent une liste de valeurs avec la syntaxe suivante :
sum (var1, of var10-var20, var 25)
3.3 Exemples
/* transformations de variables quantitatives */data sasuser.table1;
set sasuser.table2 (drop=var10 var11);
newvar1=sqrt(var3);
newvar2=log(var4)/mean(of var5-var9);
run;
/* codage en classes dune variable quantitative */
data sasuser.table1 (keep taillec sexe csp);
set sasuser.table2 ;
if sexe=M then do;
http://wikistat.fr/pdf/st-m-logiciel-sas-5sql.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-5sql.pdfhttp://wikistat.fr/http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
10/31
4 SAS de base : gestion des donnes et procdures lmentaires
if taille > 190 then taillec=grand;
else if taille > 170 then taillec=moyen;
else taillec=petit;
end;
else then do;
if taille > 180 then taillec=grand;
else if taille > 160 then taillec=moyen;
else taillec=petit;
end;
run;
/* codage en classes dune variable quantitative */
/* meme chose avec la commande select :*/
data sasuser.table1 (keep taillec sexe csp);
set sasuser.table2 ;
select (sexe);
when (M)if taille > 190 then taillec=grand;
else if taille > 170 then taillec=moyen;
else taillec=petit;
when(F)
if taille > 180 then taillec=grand;
else if taille > 160 then taillec=moyen;
lse taillec=petit;
otherwise put probleme;
end;
run;
Il est facile de supprimer ou plutt, de ne pas recopier dans la table cre
des observations vrifiant ou non une condition logique.
/* exemples de regroupement de modalits */
select(mon);
when(mon in(mars,avri,mai )) sais=printps;
when(mon in(juin,juil,aout)) sais=ete;
when(mon in(sept,octo,nove)) sais=automne;
when(mon in(dece,janv,fevr)) sais=hiver;
otherwise;
end;
select(a);
when(1);
when(3,4,5) x=x*10;
otherwise;
end;
/* limination dobservations */
data sasuser.table1;
set sasuser.table2 ;
if var1 = nul then delete;
/* SAS passe a la suivante*/
...
run;
/* selection implicite dobservations */
data sasuser.table1;
set sasuser.table2 ;
if var1 = bon ;
/* sinon SAS passe a la suivante*/
...
run;
Des commandes spcifiques ltape Data nont pas t dcrites :
retain, return, put, output, missing, list, link,label, goto, do. Ainsi, lexemple suivant utilise une variable dfinie de
faon implicite et une boucle pour rpter les diffrents niveaux dun facteur.
/* dfinition implicite dune variable */
data table1; /* fichier temporaire */
input var n ;
d o i = 1 t o n ;
input gain @@ ;
output ;
end;
http://wikistat.fr/http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
11/31
5 SAS de base : gestion des donnes et procdures lmentaires
cards ;
0 16
2 8 2 9 2 6 2 4 2 6 2 5 2 2 9 2 3 2 9 2 4 2 0 2 2 2 0 2 9 2 2
0.04 11
186 229 220 208 228 198 222 273 216 198 213
0.07 12
179 193 183 180 143 204 114 188 178 134 208 196
0.10 8
130 87 135 116 11 8 1 65 151 5 9
0.13 11
154 130 130 118 118 104 112 134 98 100 104
;
run;
3.4 Tableau de variables
Des traitements plus sophistiqus (itratifs, conditionnels) peuvent tre op-
rs sur les variables dune table en les dclarant sous la forme dun tableau
(array) dont les colonnes peuvent alors tre indices. Plus prcisment, cette
dclaration revient considrer un vecteur ligne contenant successivement
chaque ligne de la table en cours de lecture.
De nombreux exemples sont fournis dans les textes des macros-commandes.
4 Procdures de transformationDautres transformations usuelles sont proposes sous forme de procdures.
4.1 Rangs
La procdure ranks calcule les rangs des valeurs de variables quantitatives
et les recopie dans une nouvelle table. Par dfaut, les valeurs gales sont affec-
tes du rang moyen. Une option (group=) permet de spcifier le nombre de
valeurs de rangs utilises et ainsi de dcouper en classes une variable quantita-
tive avec des effectifs sensiblement gaux.
Syntaxe
proc rank ;
by variable ;
ranks liste de nouvelles variables ;
varliste de variables ;
Options
data=table sasindique le nom de la table, par dfaut, la dernire cre,
out=table sasspcifie le nom de la table cre qui contiendra les variables
initiales et les rangs,
fraction|groups=n|normal=blom pour obtenir, respectivement, les va-leurs de la fonction de rpartition, un dcoupage en n classes de mme
effectif, les valeurs dune distribution normale, plutt que, par dfaut, les
valeurs des rangs.
descendingrangs par valeurs dcroissantes, ties=spcifie la faon de grer les ex-quos (mean|high|low).
Commandes
by suivi du nom dune variable qualitative indique que les statistiques sont
calcules par groupe dobservations; la table doit tre trie.
ranks doit tre spcifie si lon veut que les variables initiales soient recopies
en sortie. Sinon, les variables gardent le mme nom. Il y a une correspon-
dance terme terme entre les noms des deux listes de variables.
var les rangs des variables de la liste varsont calculs et recopis dans la table
de sortie ; par dfaut, toutes les variables numriques sont traites.
4.2 Normalisation
La rduction ou la standardisation de variables quantitatives sobtient en
excutant la procdure standard.
Syntaxe
proc standard ;by variable ;
varliste de variables ;
6 SAS d b ti d d t d l t i
http://wikistat.fr/http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
12/31
6 SAS de base : gestion des donnes et procdures lmentaires
weightvariable ;
Options
data=table sasindique le nom de la table, par dfaut, la dernire cre,
out=table sasspcifie le nom de la table cre qui contiendra les variables
initiales et celles standardiss. printimprime moyennes et carts-types des variables traites,
mean=spcifie la nouvelle valeur moyenne (=0),
std=spcifie la nouvelle valeur de lcart-type (=1),
replacedemande que toute donne manquante soit remplace par la nou-
velle moyenne (mean=),
vardefprcise le diviseur dans le calcul de la variance (df, n, wdf,wgt).
Commandes
by suivi du nom dune variable qualitative indique que les statistiques sont
calcules par groupe dobservations ; la table doit tre trie.var les variables de la listevarsont standardises et recopies dans la table de
sortie ; par dfaut, toutes les variables numriques sont traites.
weight nom de la variable contenant les pondrations des observations.
4.3 Transposition
La procduretransposelit toute ou partie dune table SAS et la recopie
aprs transposition : les lignes deviennent des colonnes et les colonnes des
lignes. Une nouvelle variable _name_contient alors, en sortie, les noms des
variables transposes qui dsignent maintenant les observations. La commandeby permet de rorganiser des donnes complexes. Attention, si une variable est
de type caractre, toutes les variables transposes le deviennent.
Syntaxe
proc transpose ;varliste de variables ;
idvariable ;
copyliste de variables ;byliste de variables ;
Options
data=table sasindique le nom de la table, par dfaut, la dernire cre,
out=table sasspcifie le nom de la table cre,
prefix= spcifie le prfixe utilis pour crer les noms des nouvelles va-
riables,
name=spcifie le nom de la variable cre qui contiendra les noms des
anciennes variables pour dsigner les observations (par dfaut_name_).
Commandes
by : une observation est cre pour chaque variable transpose et pour chaque
groupe ; la variable de groupage est incluse en sortie mais non transpose.
La table doit tre trie.
copy les variables de la liste copysont recopies dans la table de sortie sans
transposition.
var les variables de la liste var sont transposes et recopies dans la table
de sortie ; par dfaut, toutes les variables numriques, napparaissant pasailleurs sont traites.
id nom de la variable en entre contenant les noms des variables aprs trans-
position.
4.4 Tri
La procduresortpermet de trier une table SAS.
Syntaxe
proc sort ;
by variable1 ;
Options
data=table sasindique le nom de la table, par dfaut, la dernire cre,
out=table sas spcifie le nom de la table cre qui contiendra les obser-
vations tries.
noduplimine les observations identiques.
Commandes
by liste des variables qui servent de cl de tri ; lordre est croissant par dfaut.
7 SAS de base : gestion des donnes et procdures lmentaires
http://wikistat.fr/http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
13/31
7 SAS de base : gestion des donnes et procdures lmentaires
Sur les tables tries, SAS gre deux variables gnres par la commande BY
permettant didentifier les dbuts et fin de groupes de lignes prenant les mmes
valeurs dune variable utilise dans le tri. Par exemple, si la table est tries par
la variable sexe, la commande BY sexe gnre les variables temporaires
First.sexeet LAST.sexequi prennent des valeurs 0 ou 1 pour indiquer
respectivement la premire observation ou la dernire de chaque modalit de
la variable.
5 Concatnation de tables
5.1 Concatnation verticale et fusion
Cette opration consiste complter une table SAS par une ou plusieurs
autres contenant les mmes variables mesures sur dautres observations. Elle
est trs simple raliser, il suffit de mentionner toutes ces tables dans la com-
mande set en renommant, liminant, conservant ventuellement certaines va-
riables. Sil ny a pas une bonne correspondance entre les variables, des don-nes manquantes sont gnres.
data sasuser.concvtable;
set sasuser.table1 (rename=(var1=var15))
sasuser.table2 (rename=(var5=var15));
run;
Si chacune des tables est trie sur la mme cl, ce tri peut tre conserv dans
la table concatne, il sagit alors dune fusion, en spcifiant la variable cldans une commandeby.
data sasuser.fusiontable;
set sasuser.table1 (rename=(var1=var15))
sasuser.table2 (rename=(var5=var15));
by vartri;
run;
Dautres possibilits sont offertes par la procdure append.
5.2 Concatnation horizontale
Les mmes units statistiques ont t observes sur des paquets de variables
contenues dans des tables SAS distinctes. La table regroupant toutes les va-
riables est obtenue en utilisant plusieurs fois la commandeset.
data sasuser.conchtable;set sasuser.table1;
set sasuser.table2;
run;
Le mme rsultat peut tre obtenu avec la commande merge. Elle permet,
en plus, de contrler la bonne correspondance des lignes de chaque table (trie)
suivant les valeurs dune cl et introduit, le cas chant, des donnes man-
quantes.
data sasuser.mergetable;
merge sasuser.table1 sasuser.table2;
by varcom;
run;
5.3 Affichage dune table
Le menu affichage permet de vrifier le bon contenu dune table. Parailleurs,
la procdure printdite la liste dune table SAS dans la fentre SAS.sortie
en calculant ventuellement des sommes partielles.
Syntaxe
proc print ;
by variable ;
varliste de variables ;
Options
data=table sasindique le nom de la table, par dfaut, la dernire cre,
noobssupprime les numros des observations,
roundarrondit les rsultats avec deux dcimales.
8 SAS de base : gestion des donnes et procdures lmentaires
http://wikistat.fr/http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
14/31
8 SAS de base : gestion des donnes et procdures lmentaires
Commandes
by suivi du nom dune variable qualitative indique que les statistiques sont
calcules par groupe dobservations ; la table doit tre trie.
var les variables de la liste var sont dites dans la fentre sortie ; par
dfaut, toutes les variables sont traites.
6 Procdures statistiques lmentaires
6.1 procdure tabulate
La procduretabulateest trs intressante manipuler et apporte beaucoupde richesse pour les sorties SAS. Des livres entiers lui sont dailleurs consa-
crs. Elle permet en particulier de crer des tableaux de bord(reporting) syn-
thtiques qui compilent, rcapitulent et ventuellement analysent les donnes.
La syntaxe est la suivante :
Syntaxe
proc tabulate ;class ;
var ;
table... ;run ;
Options
data=table sasindique le nom de la table, par dfaut, la dernire cre,
Chaque ligne de commande a un rle trs spcifique en fonction de la syntaxeet de la ponctuation.
Les variables qualitatives contenues dans la liste1 servent dfinir desgroupes dobservations sur lesquels des statistiques seront calcules. Ce
sont ces variables qui dfiniront les lignes et les colonnes du tableau
calculer.
Les variables contenues dans la liste2doivent ncessairement tre num-riques. Cest sur ces dernires que lon pourra effectuer des oprations.
linstructiontablepermet de prciser et dfinir larchitecture du tableau.En particulier, il est possible de concatner, croiser ou encore regrouper
des catgories.
La matrise de linstruction table est donc ncessaire si lon souhaite construiredes tableaux compliqus. Cette instruction est extrment sensible la ponctua-
tion : la virgule marque la limite entre les lignes et les colonnes, un espace in-
dique une juxtaposition de deux lments dans une mme dimension (ligne ou
colonnes) et ltoile signifie que lon imbrique deux lments dans une mme
dimension. Typiquement, on utilisera donc la syntaxe suivante :
table (lignes) , (colonnes * cellules);
Entre les parenthses de la dimension ligne, on trouve des noms de variables
cites dans class. Il en va de mme entre les parenthses de la dimensioncolonne.
Pour les cellules, on retrouve soit une statistique comme une frquence ou
un pourcentage, soit une variable de calcul (dj cite dans var) suivie dunetoile et de sa statistique.
data exemple; /* Cration de la table */input jour veh $ effectif ener $;
cards;
1 voiture 6 e
1 camion 3 g
2 voiture 4 g
2 camion 5 g
3 voiture 12 e
;
run;
Exemple dutilisation de la procdure.
proc tabulate data=exemple;
var jour effectif;
class veh;
table veh, effectif*max effectif*mean;
run;
proc tabulate data=exemple;
var effectif;
class veh ener;
9 SAS de base : gestion des donnes et procdures lmentaires
http://wikistat.fr/http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
15/31
9 SAS de base : gestion des donnes et procdures lmentaires
table veh, ener*(effectif*mean);
run;
6.2 procdure univariate
Cette procdure regroupe tous les rsultats qui peuvent tre obtenus, par
SAS, dans le cadre dune tude uni-varie de variables quantitatives : indica-teurs de tendance centrale (moyenne, mdiane, mode), indicateurs de disper-
sion, dautres caractristiques de la distribution (quantiles, skewness, kurto-
sis), les graphiques en basse rsolution (histogrammes, tige-et-feuille, bote-
-moustaches, droites de Henri), le test de Student de nullit de la moyenne,
les tests de normalit dune distribution et les tests non-paramtriques (signe,
Wilcoxon,. . . ).
Syntaxe
proc univariate ;
varliste de variables ;by variable ;
weightvariable ;output ;
Options
La liste des options permet de prciser les rsultats attendus.
data=table sasindique le nom de la table par dfaut, la dernire cre,
normalpour obtenir des tests de normalit,
plotpour obtenir les graphiques, si la commande by est employe, les
botes sont affiches en parallle, vardef=prcise le diviseur dans le calcul de la variance (df, n, wdf, wgt).
Commandes
by suivi du nom dune variable qualitative indique que les statistiques sont
calcules par groupe dobservations ; la table doit tre trie.
output indique le nom du fichier et la liste des statistiques qui y seront enre-
gistres.
var liste des variables concernes par la procdure, par dfaut, toutes les va-
riables quantitatives.
weight nom de la variable contenant les pondrations des observations.
6.3 procdure means
Les rsultats fournis par cette procdure sont inclus dans ceux produits par
la procdure univariate dcrite ci-dessus. Elle sutilise de la mme faon et
diffre par la prsentation des rsultats rsums sous la forme dun tableau plusfacile consulter. Elle ne fournit ni statistique non-paramtrique ni graphe. La
procdure summary ne diffre de la procdure means que dans le choix des
options par dfaut.
6.4 procdure freq
Cette procdure traite les variables qualitatives. Elle fournit donc des tris
plat et complte ces rsultats par des tudes bi ou multi-varis de tables de
contingences. On obtient ainsi les profils lignes et colonnes, les statistiques
des tests dindpendance (2)et des comparaisons avec les valeurs dduites
du modle dindpendance.
Syntaxe
proc freq ;
by variable ;tablesliste des croisements requis ;
weightvariable ;
Options
data=table sasindique le nom de la table par dfaut, la dernire cre,
order=freqdition ordonne par effectifs dcroissants,
Commandes
by suivi du nom dune variable qualitative indique que les statistiques sont
calcules par groupe dobservations; la table doit tre trie.
tables liste des croisements exprims sous une des formes : a*b, a*(b c),
(a b)*(c d), (a- -d)*c. Les options prcisent les rsultats et statistiques
demandes ; la plus utile est chisqqui excute un test du 2, dautres
permettent dviter certaines ditions (profils).
weight nom de la variable contenant les pondrations des observations.
10 SAS de base : gestion des donnes et procdures lmentaires
http://wikistat.fr/http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
16/31
10 SAS de base : gestion des donnes et procdures lmentaires
6.5 procdure corr
Cette procdure tudie les liaisons entre variables quantitatives et propose
donc les indicateurs usuels comme les coefficients de corrlation de Pearson
et de Spearman, dautres qui le sont moins, et les tests associs. Les rsultats
peuvent tre enregistrs dans des tables sas.
Syntaxe
proc corr ;
by variable ;varliste de variables ;
weightvariable ;
withliste de variables ;
Options
data=table sasindique le nom de la table, par dfaut, la dernire cre,
hoeffding kendall pearson spearman slectionne les types de mesure decorrlation,pearsonpar dfaut,
vardef=prcise le diviseur dans le calcul de la variance (df, n, wdf,wgt),
Commandes
by suivi du nom dune variable qualitative indique que les statistiques sont
calcules par groupe dobservations ; la table doit tre trie.
var les variables de la liste varsont croises avec celles de la liste with ; par
dfaut, toutes les variables numriques.
with par dfaut, tous les couples de variables apparaissant dans la liste var.weight nom de la variable contenant les pondrations des observations.
6.6 Produit de matrices avecscore
La procdurescorepermet de calculer le produit entre deux matrices (re-
prsentes par deux tables SAS) sans faire appel au module SAS/IML. La pro-
cdurescoremultiplie, individu par individu, les variables dune table SAS
par des coefficients (appels scores) associs ces variables et prsents dans
lautre table SAS considre. Cette procdure est utilise, par exemple, pour
calculer les coordonnes sur le plan factoriel dun individu supplmentaire
partir des rsultats dune ACP effectue au pralable. On peut lappliquer di-
rectement sur les sorties des procdures princomp,candisc,factor. . . ,
qui contiennent une matrice de type score.
Syntaxe
proc score ;
by variable ;
id variable ;
var liste de variables ;
run ;
Options
La procdurescoremultiplie les individus dune table SAS par des "scores"
contenus dans une autre table SAS. Elle effectue le produit de la matrice des
individus par la transpose de la matrice des scores. La table contenant
les scores doit possder une variable _TYPE_. Cette variable peut prendre les
valeursSCOREpour indiquer les coefficients, et MEANet STD si on souhaite
centrer et rduire les donnes avant dappliquer les coefficients.
data=tablesas contenant les individus,
out=tablesas en sortie. Par dfaut, elle contient les nouvelles variables et
les variables de la table initiale.
score=tablesas contenant les coefficients. Elle doit possder une variable
_TYPE_et peut galement comprendre une variable _NAME_donnant le
nom de la nouvelle variable ou des nouvelles variables (colonnes) cres. type=nomindique que les coefficients sont conservs dans les lignes pour
lesquelles _TYPE_prend la valeur nom (cf. exemple de la rgression o
TYPE=PARMS). Cette option est utiliser si _TYPE_est diffrent de
SCORE.
nostdindique que lon ne centre pas et que lon ne rduit pas les donnes
avant application des coefficients.
Commandes
by suivi du nom dune variable qualitative pour effectuer les calculs selon les
groupes dfinis par les modalits de cette variable. La table doit tre trie.
11 SAS de base : gestion des donnes et procdures lmentaires
http://wikistat.fr/http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
17/31
g p
var liste des variables sur lesquelles on applique les coefficients. Ces variables
doivent tre prsentes dans les tables appeles par score=et data=.
id liste des variables prsentes dans la table sortie dfinie par out=. Par dfaut
toutes les variables.
Exemples
/* Creation de la table contenant les scores */
data coeff;
input _TYPE_ $ _NAME_ $ var1 var2;
cards;
MEAN clin 1 3
STD clin 2 1
SCORE clin 0.5 -0.5
;
run;
/* Creation des donnes sur lesquelleson souhaite appliquer les scores */
data donnees;
input var1 var2 @@;
cards;
3 4 1 2 .....
;
run;
/* Creation de la nouvelle variable clin
partir de scores aprs centrage et
rduction des donnes *
/
proc score data=donnees score=coeff out=sortie;
var var1 var2;
run;
qui donne la table sortiesuivante :
var1 var2 clin
3 4 0
1 2 0.5
.. .. ..
/* 0 = (3-1)/2*0.5 +(4-3)/1*(-0.5) */
/* 0.5= (1-1)/2*0.5 + (2-3)/1*(-0.5) */
Utilisation des rsultats de la procdurereg pour calculer la valeur ajuste
de nouvelles observations.
proc reg data=donnees outest=coeff;model y = var1 var2;
run;
/* affichage de la table coeff contenant les
coefficients de la regression */
proc print data=coeff;
run;
/* table coeff */
_TYPE_ _DEPVAR_ ... INTERCEP var1 var2
PARMS y 1.5 0.3 -0.7
Il est alors possible, pour une nouvelle observation, destimer la valeur de la
variable y en appliquant la procdure score. Celle-ci tient automatiquement
compte de la constanteINTERCEPdu modle si on prcise type=PARMS.
/* calcul des y ajusts pour les nouvelles
observations */
proc score data=autretab score=coeff type=PARMS
out=valajust;
var var1 var2;
run;
Calcul des coordonnes dindividus supplmentaires (ACP).
/* ACP du tableau initial */
/* la table coeff contient les coordonnes des
vecteurs propres permettant le calcul des composantes
principales */
proc princomp data=table1 outstat=coeff;
var var1-var5;
run;
12 SAS de base : gestion des donnes et procdures lmentaires
http://wikistat.fr/http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
18/31
g p
/* Calcul des composantes principales des individus
supplmentaires, on centre et rduit les donnes
automatiquement avant calcul des composantes
principales qui sont sauves dans la table
compr2 */
proc score data=table2 score=coeff out=compr2;
var var1-var5;run;
1 Graphiques Haute Rsolution avec SAS/GRAPH
http://wikistat.fr/http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
19/31
Graphiques Haute Rsolution avec
SAS/GRAPH
RsumLe moduleSAS/GRAPHpermet de tracer des graphes dont la rso-
lution est adapte au priphrique utilis (cran, imprimante, page
web.. . ) et avec toutes les options possibles. Cette vignette dcrit les
principales procdures (gchart, gplot, annotate) et options parmi un
nombre de disponibles qui est considrable. Bien que la plupart des
procdures statistiques fournissent (open delevery system) des gra-
phiques par dfaut, la construction spcifique du graphique adapt
au problme pos est souvent incontournable.
Retour auplan du cours.
1 Introduction
1.1 SAS/Graph
Le module SAS/GRAPH propose une trs grande varits de procdures
graphiques assorties dun nombre considrables doptions. En plus des proc-
dures de base : gchart et gplot, bien dautres procdures et types de graphiques
sont accessibles :
fonds de cartes (gmap),
surfaces ou nuages de points en trois dimensions ( gcontour, g3d),
dessiner dautres polices de caractres (gfont),
combiner plusieurs graphes de natures diffrentes sur une mme page
(greplay),
tester linstallation de SAS/GRAPH, les paramtres du priphrique cou-
rant et les options en vigueur (gtestit),
gradar, gkpi, gslide, gtile, gareabar, gbarline...
Dautre part, tout texte ou figure gomtrique complmentaires peuvent tre
rajouts sur un graphe en les dcrivant dans une table SAS spciale dite dan-
notation :Annotate Data Set.
1.2 ODS Graphics
Pour "simplifier" le paysage, de nouvelles procdures graphiques directe-
ment accessibles du module SAS de base et sans utiliser SAS/Graph, sont ap-
parues partir de la version 9.2 (en test puis en production dans la 9.3) de
SAS en relation avec le service ODS : sgdesign, sgpanle, sgplot,
sgrender, sgscatter. Les objectifs sont les mmes mais les jeux dop-tions et syntaxes changent ! Nanmoins la mme logique de dfinition des gra-
phiques est utilise notamment dans notamment avec les tables dannotation.
Comme ce nouveau service ODS (open delevery system) Graphics, pro-
posent systmatiquement des graphiques par dfaut dans toutes les procdures
statistiques, il est lgitime de sinterroger sur la ncessit de mettre en uvre
des procdures spcifiques, lourdes, complexes, notamment par la richesse des
options proposes. Lexprience montre assez systmatiquement, quutiles et
efficaces en phase exploratoire ou de mise au point, des graphes par dfaut
sont vite limits. La comprhension dun rsultat statistique, sa porte, son
impact sont souvent le rsultat dun graphique pertinent adapt la structuredes donnes et la mthode utilise. Quelque soit le logiciel, une pratique
professionnelle requiert les comptences indispensables pour dchiffrer une
documentation excessivement complexe afin daboutir au graphique voulu et
pas celui impos par dfaut. Autrement dit, il sagit de savoir qui contrle le
rsultat final, le statisticien ou le logiciel.
2 Environnement
2.1 Taille des graphiques
Le graphique demand est trac dans une zone dont les dimensions sont dfi-
nies par les paramtres hsize et vsize de la commande globale goptions
(les valeurs maximales sont prises par dfaut) diminus de lespace ncessaire
ldition des titres, sous-titres, notes, lgendes,.. . . Les dimensions peuvent
tre exprimes en trois units : pouce, cm ou pct qui signifie pourcen-
tage de la dimension totale. Cette dernire unit est prfrable pour exprimer
les tailles de caractres et symboles lorsque les dimensions globales, lis au
priphrique de sortie, sont sujettes modifications.
2 Graphiques Haute Rsolution avec SAS/GRAPH
http://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
20/31
2.2 Sauvegarde des graphiques
En labsence de commande explicite, le graphe apparat sur le priphrique
par dfaut, lcran de lordinateur, dans la fentre de visualisation des rsultats.
Une fois les graphiques mis au point, ils peuvent tre sauvs dans des fichiers
ou un traitement de texte.
Un fichier de format.jpgest systmatiquement cr (sous windows) dansun rpertoire temporaire ainsi quun fichier sashtml.html contenant le gra-
phique ; consulter la fentre du journal. Il devrait tre possible de contrler la
destination de ce fichier.
2.3 Image cran
Un clic droit sur le graphique (windows mais unix ?) ouvre un menu qui
permet de sauver limage dans le format .pngavec la dfinition de lcran.
2.4 ODS
Comme vu en introduction, le graphique peut tre automatiquement orient
dans une fichier au bon format (.rtf, .html...) et sans doute avec une meilleure
dfinition que celle de lcran.
ODS RTF BODY=nomfichier.rtf;
ODS GRAPHICS ON;
/* Programme SAS */
ODS GRAPHICS OFF;
ODS RTF CLOSE;
3 Commandes globales
Elles dfinissent des objets (axes, symboles, trames, lgendes) et les options
utiliss pour les tracs ; elles demeurent valables jusqu une nouvelle dfini-
tion ou la fin de la session sas.
3.1 Axes
Des types daxes, numrots de 1 99 sont dfinis avant de pouvoir tre
utiliss dans les diffrents graphiques. Ils prcisent lchelle (liste de valeurs,
logarithmique), lapparence (longueur, couleur, paisseur, style de ligne, ori-
gine), les marques dchelle (nombre, couleur, paisseur, hauteur), les valeurs
des chelles (format), le libell (police,.. . ).
axis1 order=(1973 to 1981 by 2)
label=(annee)
minor=(number=1)
width=3;axis2 order=(0 to 10000 by 1000)
label=(Revenu en francs)
minor=none
width=3;
3.2 Lgendes
Comme pour les axes, diffrents types de lgendes (de 1 99) sont dfinis-
sables. Ils spcifient positions et textes des libells qui identifient les diffrents
graphismes et symboles utiliss.
3.3 Symboles
Les diffrents types de symboles (1 99) sont dfinis afin de dcrire les
modes de reprsentation recherchs. Sont concerns : le symbole (forme,
taille, couleur) utilis pour reprsenter un point, le type de lignes reliant les
points (couleur, continue, hachure, pointille,.. . ), la faon ou mode dinter-
polation incluant barres, botes moustaches, escaliers, splines, intervalles de
confiance, rgression (linaire, polynomiale, spline).
symbol1 interpol=sm50s /* lissage spline */value=diamond /* symbole */
height=3 /* taille du symb.*/
width=2; /* epaisseur */
3.4 Options graphiques
Outre ceux dcrits ci-dessus (hsize, vsize), cette commande redfinit
les valeurs de plus de 80 paramtres affectant
les diffrents aspects du graphique :
bordercadre autour du graphique,
3 Graphiques Haute Rsolution avec SAS/GRAPH
http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
21/31
gunit=cm|in|pctunit de mesure, rotate=landscape|portraitorientation du graphique,
le texte :
ftextpolice du texte,
ftitlepolice des titres,
texte, symboles, types de hachures, lgendes.
Les paramtres reprennent leurs valeurs par dfaut la suite de : reset=all|global allconcerne tous les paramtres tandis que que global
naffecte pas ceux dfinis dans la mme commande.
3.5 Titres et notes
Les commandes title et footnote dfinissent des lignes de texte au-
tour du graphique, elles suivent le mme principe que celui dcrit au para-
graphe I.1.4 et dautres options sont disponibles : taille, couleur et police des
caractres, position, rotations de la ligne de texte et des caractres, tracs de
lignes.
goptions reset=global gunit=pct border
ftext=swissb htext=3;
title1 height=5 Institut;
title2 de;
title3 height=5 Mathmatiques;
footnote1 font=script justify=left
Universite de Toulouse;
Il est important de noter que chaque paramtre peut tre initialis ou redfini
diffrents endroits dun programme SAS : dans les commandes spcifiques
(symbol, legend, axes, pattern, title, footnote), par la
commandegoptions et dans chacune des procdures. Ceci impose de bien
distinguer les paramtres globaux, applicables tous les graphes, des para-
mtres spcifiques chaque graphe.
4 procdure gchart
Cette procdure trace des diagrammes en barres (hbar), en colonnes et his-
togrammes (vbar), en secteurs (pie) et arolaires (star). Elle peut traiter
des variables quantitatives ou qualitatives ; les variables quantitatives sont co-
des explicitement ou automatiquement en classes ou, selon les besoins, som-
mes ou moyennes.
4.1 Syntaxe
proc gchart ;
by variable ;vbarliste de variables
> ;
hbarliste de variables
;
pieliste de variables
-
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
22/31
levels=nombre de classes,
type=spcifie ce que reprsente le graphique (par dfaut une frquence) :
cfreq(frquence cumule), cpt (pourcentage cumul),pct (pourcen-
tage),sum ou mean(associes sumvar=).
group=reprsentation de plusieurs graphes cte cte suivant les moda-
lits de la variable spcifie (hbarou vbar),
subgroup= dcoupage des barres ou colonnes selon la participation desmodalits de la variable spcifie (hbarou vbar).
4.5 Options daxes
Deux options permettent de de dfinir les axes ou de leur assigner des dcla-
rations antrieurs : gaxis=axisn pour laxe des groupes et maxis=axisn
pour celui des bornes on caractrise la dfinition daxe concerne (cf. para-
graphe V.2.1.).
5 procdure gplotGraphiques en haute rsolution de nuages de points en deux dimensions.
5.1 Syntaxe
proc gplot ;
by variable ;
plotliste de graphiques
> ;
bubbleliste de graphiques
> ;
5.2 Options gnrales
data=table sasindique le nom de la table ou, par dfaut, la dernire cre,
annotate=table sastable contenant les complments graphiques.
uniformimpose les mmes chelles aux axes des diffrents graphiques.
5.3 Options dapparence
Elles spcifient les couleurs, les polices de caractres, les tailles des bulles
(bubble), le hachurage daires, la dfinition de lgendes, la superposition
(plot).
5.4 Options daxes
Deux options permettent de dfinir les axes ou de leur assigner des dclara-
tions antrieurs : vaxis=axisnpour laxe vertical et haxis=axisnpour
laxe horizontal on caractrise la dfinition daxe concerne (cf. paragraphe
5.2.1.). De plus,frametrace un cadre tandis que noaxissupprime les axes.
5.5 Commandes
by suivi du nom dune variable qualitative indique que les graphiques sont
tracs par groupe dobservations ; la table doit tre trie.
plot liste des graphes sous la forme : y*x, avec la mme
syntaxe que prcdemment pour dsigner plusieurs graphes (a*(a b),. . . ).La variabley fournit les ordonnes et x les abscisses des points reprsen-
ts par des symboles dfinis dans la commande symboln ou par diff-
rents symboles selon les valeurs de la variable spcifie qui induit une
classification. Dans ce dernier cas, une lgende est cre par dfaut.
bubble liste des graphes sous la forme : y*x = size o sizeest une va-
riable indiquant la taille des bulles tracer autour des centres de coordon-
nesx et y.
6 Annotate data setUne table dannotations, dfinie lors dune tape data, est une table SAS
contenant les descriptifs dun ensembles de graphiques qui viendront se
superposer aux rsultats des procdures prcdemment dcrites (gchart,
gplot,...). Il est alors possible de positionner tout libell ou toute figure
gomtrique simple et ainsi de personnaliser ses graphiques.
Des applications immdiates sont, par exemple, la production de plans fac-
toriels avec identifications des points (variables, individus, modalits) par des
libells explicites ou encore le trac du cercle des corrlations en analyse en
composantes principales.
5 Graphiques Haute Rsolution avec SAS/GRAPH
http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
23/31
Par principe, chaque ligne ou observation dune table dannotations est
une commande de ralisation dun graphique particulier. Les valeurs de cha-
cune des variables spcifient comment raliser ce graphique : type, empla-
cement, couleur,. . . . Les variables de la table dannotation ont des noms pr-
dfinis ; les plus usuelles sont :
function indique ce quil faut trac : bar, draw, frame, pie, symbol, label,. . . ,
x positionnement en abscisses,
y positionnement en ordonnes,
size hauteur des caractres,
xsys unit de mesure des abscisses,
ysys unit de mesure des ordonnes,
hsys unit de mesure des hauteurs,
color couleur,
position dun texte par rapport aux coordonnes (cal gauche, centr,. . . ),
line type de ligne (par dfaut, continue),text texte du libell
style police de caractres.
La mise en uvre de ces fonctionnalits est un peu fastidieuse mais cest
la seule faon de faire diter par SAS certains types de graphiques dont les
fameux plans factoriels avec les libells en clair de tous les points.
Cration dune table dannotations :
data annocomp;
set outcomp;
x = prin1;y = prin2;
xsys= 2;
ysys= 3;
text= lib_ind;
size= 0.8;
label x = axe1;
label y = axe2;
keep x y text xsys ysys size;
run;
1 SAS macros : criture de macros commandes
http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
24/31
SAS macros : criture de macros
commandes
Rsum
Cette vignette dcrit brivement les principes et objets du macro
langage de SAS permettant dcrire des macros commandes : ma-
cros variables, macros fonctions, passages de paramtres et syntaxe
dune macro commande.
Retour auplan du cours.
1 Introduction
1.1 Motivations
Ds quil sagit dcrire des programmes SAS suffisamment gnraux afin,
par exemple, de les appliquer diffrents jeux de donnes, il est ncessaire, par
souci defficacit, de faire appel aux ressources de SAS permettant de dfinir
desmacro-variableset des macro-commandes.
Lcriture de macros SAS est une activit courante dans les grandes en-
treprises et les socits de service spcialises dans ce logiciel. Lobjectif est
de concevoir puis carrosser un ensemble de traitement spcifiques afin de les
rendre accessibles des utilisateursnon spcialistes de SASmais gros consom-
mateurs comme dans lindustrie pharmaceutique ou le marketing.
1.2 Principes
Le principe gnral consiste associer une chane de caractres, une suite
de commandes ou, un texte un identificateur. Par la suite, toute occurrence
de cet identificateur ou macro variable est remplace par le texte dsign au
cours dun traitement pralable lexcution proprement dite des commandes.
Le pr-processeur implicitement invoqu reconnat diffrents objets : va-
riables, commentaires, commandes, fonctions, arguments, qui lui sont propres
(prcds des caractres & ou %) ; ils lui confrent les possibilits dun langagede programmation rudimentaire mais structur.
Le macro-langage, au mme titre, augmente les possibilits du langage de
base. Il permet de passer des paramtres entre les tapes DATA et PROC et de
systmatiser lenchanement dune squence donne dinstructions.
Les macro-variables et macro-commandes sont connues, sauf dclaration
explicite contraire (%global, %local), dans lenvironnement dans lequelelles sont dclares : globalement pour toute une session SAS ou localement
lintrieur dune macro.
2 Macro-variables
2.1 syntaxe
La dclaration dune macro-variable consiste associer par la commande
%let une chane de caractres (jusqu 65534) un identificateur (de 1 32caractres) :
%let nomvar1=taille;%let nomvar2=poids;%let varlist=csp sexe age taille poids revenu;/* affichage du contenu : */%put &varlist;
Certaines dclarations de macros variables sont implicites : compteur dune
boucle%do, paramtres dune macro-commande,.. . .
Dans la suite du programme, les rfrences une macro-variable sont pr-
cdes du caractre& :
title "tude des variables &varlist";proc plot;
plot &nomvar1*&nomvar2;run;
Le caractre & est traduit au niveau du pr-traitement : remplacer la macro-variable qui suit par la chane de caractres avant de passer lexcution.
Attention aux chanes de caractres. Si la chane est entre "... ", une macro
variable contenue dans la chane est interprte, remplace par sa "valeur". Ce
nest pas le cas si la chane est entre ....
2 SAS macros : criture de macros commandes
http://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
25/31
Une macro-variable peut contenir elle-mme des commandes ou instruc-
tions SAS mais, dans ce cas, il est prfrable de dfinir une macro-commande.
Le systme gre des macros variables prdfinies comme sysdate etsysday qui contiennent respectivement la date et le jour du dbut de la ses-sion SAS en cours. Excuter et consulter la fentre du journal :
%put &sysdate;%put &sysday;%put &_automatic_;
La dernire commande liste toutes les macros variables du systme. Ces ma-
cros variables peuvent tre incluses dans un programme pour dater les sorties.
2.2 call symput
Linstruction call symputpermet de crer une macro-variables en luiaffectant les valeurs dune variable dune table SAS. Cette instruction sutilise
exclusivement dans une tape DATA.
CALL SYMPUT("nom-macro-var",valeur-macro-var);
Cela signifie que le contenu de cette macro variable nest pas prdfini par
une chane de caractres mais peut voluer en cours dexcution. Ainsi dans
lexemple :
data _NULL_;
set table-sas;call symput("nobs",_N_);
run;
Comme la variable prdfinie _N_est incrment par le numro de lobser-vation courante, lissue de lexccution la macro variable contient comme
"valeur" le nombre dobservations de la table-sas. Cest videmment trspratique quand cette information nest pas connue a priori sur lensemble des
tables qui seront traites.
3 Macro fonction
Un ensemble de macros fonctions sappliquant des macros variables sont
prdfinies. En voici des exemples
%let semaine = lundi - mardi - mercredi - jeudi -vendredi - samedi - dimanche;
%let longueur = %length(&semaine);%let jour2 = %scan(&semaine,2,-);
Dans cet exemple, la macro-variable longueur contient la longueur de la chane
de caractres semaine soit 63. La macro-variable jour2 correspond ensuite au
2me mot de la chane (soit mardi). Le troisime argument indique que le
sparateur est un tiret.
Par dfinition, une macro-variable sert stocker du texte. Par exemple, la
valeur dune macro-variable laquelle on affecte1+2 est la chane de carac-tres1+2 et non lentier 3. Toutefois, il est possible de forcer le compilateurmacro effectuer lopration avec la macro fonction %eval qui opre dessoustractions, multiplications et divisions seulement sur des entiers partir
dexpressions contenant des macro-variables. Si la valeur value contient des
dcimales, la valeur est tronque la partie entire.
%let i = 22;%let j = &i/7; /* j contient 22/7 */%let k = %eval(&i/7); /* k contient 3 */
4 Macro-commandes
4.1 Syntaxe dune macro commande
La dclaration dune macro-commande (oumacrotout court) suit les mmes
principes,
%macro impdat;%* ceci est un commentaire;proc print;run;%mend impdat;
3 SAS macros : criture de macros commandes
http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
26/31
elle peut inclure des paramtres qui deviennent des macro-variables locales :
%macro plot(yvar,xvar);proc plot;
plot &yvar*&xvar;run;
%mend plot;
Lexcution dune macro est invoque en faisant prcder son nom du ca-
ractre% :
%impdat;%plot(taille,poids);
4.2 Valeurs et ordre des paramtres
Les paramtres peuvent avoir des valeurs par dfaut :
%macro plot(yvar=taille,xvar=poids);proc plot;
plot &yvar*&xvar;run;%mend plot;
Il nest plus ncessaire de leur assigner des valeurs. Attention lordre des
paramtres qui est significatif dans le cas de paramtres sans valeurs par dfaut.
Sinon, le nom du paramtre est obligatoire au moment de lappel. Par principe,
les premiers paramtres dune macro commande sont ceux les plus utiliss qui
nont pas de valeur par dfaut.
5 Exemple
Exemple rudimentaire dune macro commande pour faire de lAnalyse en
composantes principales partir de la procdureprincomp.
%macro acp(ldataset, lident, llistev, red=);%global dataset ident listev;
%let dataset=&ldataset;%let ident=&lident;%let listev=&llistev;%* Acp de dataset ;%* ident : variable contenant les;%* identificateurs des individus;
%* llistev : liste des variables (numeriques);%* par defaut : reduites sinon red=cov;
%* options edition;options linesize=80 pagesize=60 number;title "A.c.p. des donnees de &dataset";footnote;
proc princomp data=donneesoutstat=eltpr out=compr
vardef=N &red;var &listev;run;%mend acp;
/* acp reduite par defaut */%acp(crime,staten,murder--auto);
6 Bibliothque de macros commandes
6.1 Dans un fichier
Une macro-commande doit tre dclare avant toute utilisation au cours
dun mme session SAS. Lorsque certaines macro-commandes sont rguli-
rement utilises, il est pratique de pouvoir les conserver les unes la suite des
autres dans un fichier muni de lextension .sas. En les ajoutant dans un fi-chier appel macros.sas, par exemple, il suffira ensuite dans nimporte quelprogramme SAS de faire lappel :
%INCLUDE "macro.sas";
4 SAS macros : criture de macros commandes
http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
27/31
6.2 Dans un rpertoire
Il est aussi possible de stocker les macros dans une bibliothquede macros
spcifique un utilisateur ou un groupe. Les rgles suivantes sont respecter :
1. Chaque dclaration de macro et une seule est enregistre dans un fichier
qui a pour nom lidentificateur de cette macro suivi de lextension .sas :
impdat.sas,
2. Tous ces fichiers sont regroups dans un ou des rpertoires qui constituent
la ou les bibliothques,
3. le ou les chemins daccs sont spcifis une fois pour toute dans le fi-
chier de configuration SAS de lutilisateur. Encore faut-il avoir identifi
et localis ce fichier et pouvoir y avoir accs !
En dbut de chaque session, SAS charge le rpertoire de macros.
1 La Procdure SAS/SQL
http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
28/31
La Procdure SAS/SQL
Rsum
Cette vignette dcrit lusage de la procdure SQL qui permet linter-
rogation de tables SAS laide du langage de requte standard.Retour auplan du cours.
1 Introduction
Le langage SQL (Structured Query Language) est un langage dinterroga-tion de bases de donnes standardis commun la plupart des logiciels de basede donnes. La procdure sqltudie dans cette vignette en constitue une im-plmentation dans la version 9.3 de SAS. Cette procdure permet dextraire,corriger et mettre jour des donnes dans une table SAS, souvent plus rapide-
ment que par une tape data.Le terme de tabledsigne toujours une table SAS, correspondant un sto-
ckage de donnes propre ce logiciel. On utilise galement deux nouveauxtypes dobjets : lesvueset lesindex. Une vue est le stockage dune interroga-tion ou ensemble de requtes : elle contient la description ou dfinition dunetable virtuelle. Une vue est donc une interrogation laquelle on donne un nom,pour son usage ultrieur dans une autre procdure SAS. Le principal intrt dedfinir une vue est le gain despace mmoire. Un index est un systme de poin-teurs permettant dans certains cas daccder plus rapidement aux informationscontenues dans une table SAS.
2 Syntaxe de la procdure
2.1 Commandes
proc sql ;
alter table dclaration de modification ;
create table dclaration de cration;
delete dcl-destruction;
describe dcl-description;
drop dcl-suppression;
insert dcl-insertion;
reset ;
select dcl-slection;
update dcl-mise jour ;validate dcl-valuation;
Remarques :
il est inutile de rpter linstruction proc sql avant chaque dclaration,sauf si lon excute une tape data ou si lon fait appel une autre proc-dure entre deux commandes desql.
linstructionrunnest pas ncessaire.
2.2 Options inobs=nrestreint le nombre dobservations traites (par exemple dans une
clausewhere) sur une table fournie en entre de la procdure. outobs=nrestreint le nombre dobservations traites (par exemple ins-
res) dans une table retourne par la procdure. feedbackrappelle la dfinition des vues parentes lors de la description
dune vue (commande describe). noprintpas ddition
3 Dtail des commandes
3.1 La commandecreate
Elle permet de crer des tables, des vues, ou des index, partir dautrestables ou dautres vues.
Cration dune table
Syntaxe
create table nom-tableasquery-expression;
create table nom-tablelikenom-table ;
2 La Procdure SAS/SQL
http://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/pdf/st-m-logiciel-sas-1intro.pdfhttp://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
29/31
create table nom-table(def-col ) ;
La premire syntaxe est utilise pour stocker les rsultats dune interrogation.Cest une faon de crer des tables temporaires. La deuxime syntaxe est utili-se pour crer une table ayant les mmes noms de variables et mmes attributsquune autre table. La troisime syntaxe est utilise quand on veut crer unetable dont les colonnes ne sont pas prsentes dans des tables dj existantes.
Les syntaxes 2 et 3 crent des tables vides, quil faut ensuite remplir avec lacommande insert. Cration dune table SAS permanente dans la librairiesql
libname sql sql;
proc sql;
create table sql.statlab like sasuser.statlab2;
create table sql.statlab2 as
select sexenf, gsenf, tenf_n,
penf_n, tenf_10, penf_10
from sasuser.statlab2
where (consm_n=nonfum);
Cration dune vue
Syntaxe
create view nom-vueasquery-exp ;
Une vue tant une interrogation stocke et ne contenant pas de donnes, on nepeut utiliser les instructions suivantes quand on se rfre une vue : insert,
delete,alter,update.
Cration dune vue partir dune table
create view labv2 as
select sexenf, gsenf, tenf_n, penf_n,
tenf_10, penf_10
from sql.statlab2
where (sexenf=fille);
proc print data=labv2; run;
Cration dun index
Un index stocke la fois les valeurs des colonnes dune table, et un systme dedirections qui permet daccder aux lignes de cette table partir des valeurs delindex. Lutilisation de lindex lors dinterrogations ou autres instructions dela procdure est dtermine par le systme. Lindex est automatiquement mis jour quand on modifie la table laquelle il est associ. Il permet damliorerla performance de certaines commandes, par exemple la comparaison dunecolonne indexe une valeur constante laide de lexpressionwhere.
Syntaxe
create indexnom-indexonnom-table ;
Le mot-cl unique garantit que chaque valeur de la colonne indexe estunique. Ceci peut tre utile quand on manipule des variables telles que le nu-mro de scurit sociale. Cration de lindex simple gseassoci au groupe
sanguinproc sql;
create index gse on sql.statlab2 (gsenf);
Cration de lindex compositeconsmassoci deux variables
proc sql;
create index consm on sql.statlab2 (consm_n,consm_10);
3.2 La commandealterElle permet dajouter ou de supprimer des colonnes dans une table SAS, ou
den modifier les attributs (longueur, label, format).
Syntaxe
alter table nom-table
< adddef-col >
< modifydef-col >
< dropnom-col > ;
3 La Procdure SAS/SQL
http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
30/31
Modification dune table existante
alter table sql.statlab2
add gender char(6);
3.3 La commandedelete
Elle permet de supprimer des lignes dans une table.
Syntaxe
delete from nom-table < wheresql-exp > ;
Suppression des lignes dune table
delete from sql.statlab2 where gsenf=A+;
3.4 La commandedescribe
Elle donne la dfinition dune vue, et des vues parentes si loptionfeedbackest spcifie.
Syntaxe
describe view nom-vue;
Description dune vue
describe view labv2;
3.5 La commandedropElle permet de dtruire indiffremment une table ou une vue.
Syntaxe
drop table nom-table < , nom-table > ;
drop view nom-vue < , nom-vue > ;
3.6 La commandeinsert
Elle permet dajouter des lignes une table.
Syntaxe
insert into nom-table < (nom-col < , nom-col >>)
values(value < , value >) ;
Il existe deux autres manires dutiliser la commande insert(voir laide enligne).
Insertion de lignes dans une table
insert into sql.statlab2
values (fille,AB,0,0,0,0,d)
values (garcon,AB,10,10,10,10,e);
3.7 La commandeselect
Elle permet de slectionner des colonnes dans une table, et dafficher lesrsultats dans la fentre output.
Syntaxe
select liste dobjetsfromliste < wheresql-exp > ;
3.8 La commandeupdate
Elle permet de modifier les valeurs de certaines observations pour des co-lonnes dune table existante.
Syntaxe
update nom-tablesetnom-col=sql-exp < wheresql-exp > ;
Modification dune table
update sql.statlab2
set gender=sexenf;
3.9 La commandevalidate
Elle permet dvaluer la syntaxe dune interrogation sans lexcuter, et re-tourne un message dans la fentre log.
4 La Procdure SAS/SQL
http://wikistat.fr/ -
7/26/2019 SAS 9.4 Sous Linux - Logiciel Hermtique Pour Systme Ouvert
31/31
Syntaxe
validate query-exp;
Cette commande est essentiellement utile dans des applications utilisant desmacro-variables. validateretourne alors une valeur indiquant si linterro-gation est valide grce la macro-variableSQLRC(SQL Return Code).
4 Comparaison de la procdure sql avec
une tape data
On veut connatre la taille moyenne 10 ans et par sexe des enfants dont lamre consommait entre 10 et 20 cigarettes par jour au moment de leur nais-sance. crire le programme permettant de calculer ces quantits laide desprocdures summary, sort et print ; puis comparer avec le programmesuivant utilisant la procduresql.
4.1 Une utilisation de laproc sql
proc sql;
select sexenf , mean(tenf_10) as tmoy
from sasuser.statlab2
where consm_n=10a20cig
group by sexenf
order by tmoy;