* AMUeBLBUION SETVEF » eC «DAD Enterprise Data Integration Server ».
[Link]/france/software/technologies/dw-html
Forecast Server est une application d’aide & la production de prévisions.
#[Link]/technologies/analytics/forecasting/forecastserver/
Studio est une interface experte avancée pour le st
ion graphique comme la programmation SAS. Elle permet de recourir a la
exploratoire tout en se concentrant sur le développement de nouveaux
thmes (approche « statistiques-mathématiques») et nécessite la maitrise de la
rammation SAS/STAT et SAS/IML.
J/[Link]/rnd/app/studio/[Link]
1 citons :
ILS (National Language Support), qui n'est pas un module en tant que tel mais
application qui permet & SAS de fonctionner au mieux sur des systemes non
Créer une table SAS
‘Au sommaire de ce chapitre:
© 1.1 Premiers pas avec SAS
© 12 Deux étapes distinctes : DATA et PROC
© 13 Lestables SAS
informations séparées par un espace
.ension appronfondie du cas simple
© 1.6 Introduction de valeurs manquantes
© 17 Variables numériques t variables caracteres
ject i I Sagit
re 4 pour objectf de vous aider dans vos débuts avec SAS. Il sagit
rent de vous présenter environnement de développement SAS et
prendre & créer vos premieres tables,
© 1.1 Premiers pas avec SAS
‘Au démarrage de SAS, l'écran de la figure 1.1 apparait.
Figure 1. + Capture 'écran SAS Windows.Les étapes DATA ont généralement pour
(voir la seconde étape DATA de la figure
Les étapes PROC permettent d’exploiter les données contenues dans des tables SAS
par application de protocoles préécrits et propres & chaque procédure. Ces étapes
le table SAS (table de résultats — voir la premitre
rapport dans la fenétre SORTIE, par exemple (voir la
spe PROC de la figure),
En dehors de ces deux étapes, votre programme peut au
globales. Celles-ci agissent sur votre environnem
roc reg (DEG:o <2 [NEVES ;
savas (GROSSES;
Figure 14 + Eléments de langage.
Au sein de chaque étape (DATA ou PROC), vous employez des instructions qui
‘mobiliseront des variables ou des tables. Ces instructions se trouvent généralement en
début de ligne et sont souvent accompagnées d’options précisées ensuite, parfois
précédées du signe /. Attention cependant : tout ce qui n'est pas une instruction ou un
‘nom de variable nest pas forcément une option. Ainsi, DDMMYY 10. est un FORMAT.
On peut construire les variables en faisant appel a des fonctions (qui ont un ou
plusieurs arguments) ou & des opérateurs. Ceux-ci sont toujours suivis d’un nom de
Variable, d’une constante numérique, d'une modalité caractére, d'une fonction, etc,
Les options de table sont précisées entre parenthéses et suivent le nom d'une table.
Vous pouvez y recourir dés qu'un nom de table apparait
© 1.3 Les tables SAS
Dans le vocabulaire SAS, le terme «table» indique le fichier dans lequel sont stockée:
les données que vous allez analyser. Une table SAS présente trois caractérstiques
'* Une table est nécessairem ente dans une bibliothéque SAS.
‘* Elle contient des données organisées sous la forme d'un tableau dai
des variables, lnngueur de cel
En ce qui concerne la dimension «données» d’urie table SAS, si vous ne regarde:
qu'une colonne, vous verrez l'ensemble des modalités que peut prendre une vs
les variables pour une obsei
Afin de mieux comprendre la structure d'une table de données, nous avons ouver
Figure 1.5 + Ouvrirune table dans fenésre VIEWTABLE,
NT et WEIGHT
Les variables contenues dans cette table sont NAME, SEX, AGE, HEI
Les observations sont relatives & des individus. Cette table en contientlest possible d’apporter
BLE (mo
te modification majeure, vous
iture d’un programme dans la
ns a la table via la fenétre VIEWTA
ertaines valeurs, tris, mises en forme...), mais pour t
devrez passer par une étape DATA et done par
fenétre EDITEUR.
table, vous pouvez au choix :
les propri table en cliquant du bouton dr
EXPLORATEUR, sur icone de la table CLASS
* demander un PROC CONTENTS sur cette tabl
dans Vonglet
(oir section 5.1).
Concentrons-nous a présent sur la phase de création des tables SAS. Cest une étape
extrémement importante puisqu’elle conditionne votre résultat final: votre table dat
absolument gre le reflet exact des données dont vous disposez actuellement en dehiors
de SAS, Si tel nl était pas le cas, les analyses que vous pourriee mener par la sure
niauraient aucune valeur.
SAS offre des outils qui vous permettent de vous assur que votre table est bien une
fidéle reproduction de vos données originales. es divers outils seromt présentés dang
la section 2.8.
‘Nous allons voir dans la section suivante comment, dans le cas le pls simple, créer
tune table SAS a partir de données brutes. Ces données que vous souhaitez wir tama
soit elles se trouvent déja
‘de papier et vous devez les
Cest ce dernier cas que nous présentons en premier pour sa simplicité mais vous le
rencontrerez trés rarement. Vous pourre2 ainsi vous familiariser avec les ables SAS et
‘comprendre comment SAS interpréte les données qui lui sont soumises,
© 1.4 Cas simple informations séparées
Par un espace
ee
Dans cette section, nous allons créer nos premitres tables SAS, Au-dela de ce trav
aussi d'approfondir notre connaissance du fonctionnement de SAS et son
a -exécution de notre premier programme nous permetira de nous
familiariser avec YEDITEUR SAS et le bibliotheques,
1
1 Créer une premiére table SAS
Programme 1-1
de commencer l’analyse de ce programme : notre
indiquera, po
jonnées dans votre fichier et il est composé de champ:
fe charps eu moyen des separsteus de chaps Despacr
ar défaut. /
a danse case pus simple: ity cing variables sti (X1 2X9 X4X5)
observer qu'il existe, par enregistrement, cing champs séparés par des esp.
161 ABELIEN pour le premier ent qe eneiste
seme les modalités prises par les variables pour une observation (ct. le).
instruction demande SAS de créer une table quel'on vaappler TEST. Conve
TOUTES les nsractons de SA, cele! e termine par un Siow obi
“debut 800s des exeus de programmation que vous renconterezsron is des
oubliés,
E eres. Vous pouvez utiliser toutes les
une table ne doit pas excéder 32 caractéres
Haar i accents ele ign «peat eomtenit des chifres mais ne dot ps
tbat para chile SAS ne fat po ds ton entrees maj eles nos
les La table TEST est donc parfatement équivalene ia table tes aumoyende
e WORK et a pour nom ° erie le programe, vous pos
,
Les mots clés ouvrant et fermant les étapes (DATA/RUN, PROC/RUN et
%MACRO/9%MEND) apparai bleu et en gras. A Vintérieur des étapes DATA
et PROC, les instructions propres a étape sont reconnues par
enbleu clair (
et DATA pour Pet
¥¢ PROC PRINT). Les instructions VAR et IMPUT de I'étape
+. Vous pouvez aus charger ce programme sur st compagnon de cet ouvrage: [Link], Ce programe et
propose ite dustin, Hafan ait anccun sens.iret apparaissent en rouge dans le programme
‘est pas possible dans l"étape DATA et IMPUT
‘parce que cette instruction n’existe pas — les erreurs de frappe dans les noms des
instructions peuvent done étre repérées).
1s de caractéres entre quotes, simples ou doubles, sont reprises en violet.
tun chemin vers un fichier externe, soitla modalitéd’une variable
caractére. La zone de saisie des données est présentée avec un fond jaune. Les noms
des INFORMAT (DDMMYY., des FORMAT et des constantes numériques (I dans la
ligne debutant par IF) app: en sarcelle (bleu-vert moyen). Les constantes
numériques apparaissent de plus toujours en gras ; est également le cas de certains
FORMAT ou INFORMAT (de type W.D : 8.4).
programmes des étapes DATA
des tables créées ou utilisées
(OC apparaissent en
EST) et des noms des
ras, sauf les
langage macro. Ces
programme
lest donc important d'observer les couleurs que prend
apparaissent en bleu.
texte. Si un élément de
de soumettre celui-ci*,
, relisez votre programme
tration, retirez,
cn bleu et en gi
la raison avant toute demande d’exécution
Sata test:
INPUT xi x2 39 x4 x8 42
7855 1361 apgLisN
35 6 5 1336 auntie
82 15 2499 anteL
Figure 1.6 + Capture d'écran du programme 1.
Dans Véditeur, un signe SI
ATA ou PROC de début
de réduire ou développer
1.4.3 Demander lexécution d’un programme
Une fois le programme saisi, il convient de demander & SAS de lex:
étre fait de plusieurs
1.4 Cas imple informations séparées par un espace 23
votre traitement de texte. Pour demander lexécution de votre programme, vous
avez plusieurs possi
iche F3 de votre clavier,
ne & située dans la barre d'outils.
* Vous sélectionnez la commande Soumettre du menu Exécuter.
* Vous cliquez du bouton droit et choisissez dans la zone de I’éditeur Soumettre
sélection ou Soumettre tout.
* Pour les programmes qui utilisent beaucoup de ressources, vous pouver également
demander une exécution en mode BATCH (voir figure 1.7). Vous devez saisir
‘Yotre programme, puis Pentegistrer sur votre disque dur. Terminea votre sess
SAS (quittez SAS) et, via Yexplorateur Windows, retrouvez votre programme
Yotre disque dur. Cliquez du bouton droit et sélectionnez Batch Submit wit
‘SAS 9.2.
am
Figure 1.7 + Vexécution dun programme en mode Bateh,
* Vous appuyez
*# Vous cliquez sur
Si vous ne sélectionnez pas votre programme et si vous demandez une exécution,
toutes les lignes de programme saisies dans la fenétre EDITEUR seront exécutées
(méme les partis de programme que vous ne voulez pas exécuter),Sivotre programme
Aisparait (c'est possible avec certaines versions de SAS), appuyer sur la touche F ou
demandez dans le menu Exécuter/Rappeler la derniére exécution pour le faire
réapparaitre,
Pour une raison ou une autre, vous souhaiter interrompre le programme, vous
vez soit appuyer simultanément sur Ctrl et Pause, soit sur le bouton @ dane ls
barre d'outils. Dans tous les cas, présentée la figure 1.8 apparaitra,
Fever Fenivesr2
Figure 1.8 + Interrompre un programme SAS.
Le fait de cliquer sur‘OK’ dans la fenétre n® 1 ouvze la fenétre n° 2, dans laquelle vous
confirmez Vannulation de Fexécution de votre programme.
Vous pouvez a présent soumettre a SAS le programine 1.1 présenté précédemmentaoe
uM;
aoe
sae say
impre dans la fenetre
i “est une fausse impression. Passez n
en ne semble se produire, mais Cest ores, Ps dans a fen
JOURNAL S SAS sconseoment exes soe programe, Yo deere
cher en noir accompagné de commentaies Tan gue eeu sot en le
lu vert, Cest quil y a eu un «pe meme
ext vo ogra ise fe 0. pons sm
a pas &té exécuté parce
Leprogrammen'ap:
ez votre fenétre JOURNAL, commen debut
Lorgue vous examines vote fete JOURNAL itm nan
fervenue plus t6t, Si vous vous focalisez uniquement sur la derniére erreur,
sible que vous ne trouver jamais
Ces erreurs qui empéchent la com
sont manquants
© Vous faites appel
cent verifier ai wt table es in confrme aux
denna orgs vtec ne compren past dobre
utiliser la procédure PROC PRINT :
Pan oatietos
récise. La procédure PRINT
c dure de SAS effectue une tiche bien p octdure PRINT
fonteaeree oes impresion de la table. Maintenant, quele que sit ap
ee
1000 ontere0t options:
instructions;
roc
un
pas indiquer, au moyen de DATAS, la table sur laquelle vous voulez
txt cate procure El sone
etre SORTIE appara serhuie
mullpas oberon eee ifier le nombre d’observations a envoyer
nillions observations), vous pouvez spécifier le nombi
dansla fenétre SORT!
eres observations seront envoyées dans. votre feat
haitez voir les dix dernigres observat regarder dane un
bre @ observations de votre table. Celui-ci es Unde dan
lors de la création de votre table. Imaginons que c
PROC PRINT DATAstest(ezRsTO
am;
NOTE: The data set [Link] ny
Pour créer une bibliothe
14 Cas simple informations éparées par un espace # 25
Pour imprimer les observations 9990 4 10000 (
855890 0BS-19009);
1 observations) :
Li aleur donnée & OBS est nécessairement Supérieure a celle donnée & FIRSTORS,
1s options OBS= et FIRSTORS. ne cen bas des options de PROC PRINT mais dex
gptions de table (DATA set options). Vi
ne et vez Tecourir ds qu’un nom de teble
*stcité dans une procédure ou dans une ape DATA,
1.4.4 Les bibliothéques
Si tout se passe bien lors dela phase dec
“ation dela table, SAS vous donne ce type de
‘message dans la fenétre JOURNAL;
's 9 observations and 5 variables,
shacitle TEST dans la bibliothaque WORK. Par défaut, vous
ques : WORK, SASHELP, SASUSER ot MAPS" (voir figure
“avez sur Vonglet EXPLORATEUR, puis doubles
conte
Figure 1.9 + Les biblithéques,
{a bibliothéque MAPS contient ls fonds de artes que Vous pouver utiliser dans la
Procédure graphique GMAP.
certain nombre de fichiers nécessa
rien écrire dans ces bibliotheques.
la
res au bon fonctic
ER contient les informati
"mporaire, vidée de so;
que
Cinstruction DATA
Vous trouverer dans
esq
a placer dans
iothéque n'est in
ibliotheque temporai
"que permanente, vous pouvez
Lub tines documents’;LIONANE toto “0
ieque permanente. Le nom de cette
‘emplacement physique, sur votre
disque dur, de cette biblioth¢que. Linstruction LIBNAME fait partie des instructions
‘qui définissent votre environnement. C’est une instruction globale ; elle se place
généralement en dehors des instructions DATA et PROC. Le chemin physique doit
ire encadré par des quotes, simples ou doubles. Cependant, si dans le nom de Pun de
vos dossiers ci
doubles
s apparait une quote, vous devrez impérati
ser des quotes
‘3 pour Vanalys
i votre chemin,
lest pas correct, labibliothéque ne peut pas étre créée. I est possible d'attribuer a une
bibliothéque plusieurs emplacements. Ainsi
Programme 1.3
aimee s\eae exemple’ “eines docu!
Vous pouvez aussi créer une bi
Autre possibilité: cliquez du bouton droit dans Ponglet EXPLORATEUR actif, puis
sélectionnez Nouveau. Dans les deux cas, la fenétre présentée a la figure 1.11 apparaitra
Figure 1.11 + Création d'une nouvelle bibliotheque,
Vous devee alors préciser le nom, le moteur et |
‘théque. En spécifiant un moteur, vous avez la possi
fichiers il va trouver a emplacement physique que v
défaut est V9 (pour SAS, version
1.4 Cassimple:intormations separees parun espace @ 27
théque que vous créez sera systématiquement définie a chaque
vous ne cochez pas Activer au démarrage,
votre session SAS. Atte
dans cette bibliothque seront détruites, mais que l'assoc
mn entre le nom de votre
Le nom d'une bibliothéque ne doit pas excéder 8 caractéres. Vous pouvez
toutes les lettres non accentuées et le signe «_». Il peut contenir des chiffres mais ne
doit pas débuter par un chiffre.
Sivous avez a spécifier un moteur parti
JOURNAL afin de voir si votre
ssages que vous trouverez dans la
8 et 9 de SAS’. Parmi les
les, vous remarquez la présence d'un moteur Excel. Vous devinee done
qu'il est possible de lire et d’écrie directement au moyen de SAS des fichiers Excel.
Nous traiterons de la construction de tables SAS & partir de classeurs Excel dans les
sections 2.7.1 et 2.7.2.
Pour placer la table TEST dans votre bibliothequ
programme 1.4
vous suffit d'exécuter le
Programme 1.4
La premiére instruction demande la création d’une table TEST dans la bibliothéque
TOTO. La seconde instruction indique que SAS doit utiliser (SET) la table TEST,
située actuellement dans labi que temporaire. Le RUN demande Pexé
programme.
Dans le cas of theque contient plusieurs chemi
le premier chemin. Dans le cas LAMAR &
les tables seront écites dans‘d:\mes documentsTest possible de créer directement la table SAS dans une bibliothéque définie au
préalable:
ici des données que vous allez devoir entrer dans une table SAS :
»
‘Combien de champs avez-vous ? Combien d’enregistrements ? Rédigez le programme qui créera
votre table, Verifies ensuite, au rioyen d’un PROC PRINT et en éditant votre table dans la fenétre
VIEWTABLE, que votre table est bien & Vimage des données présentées ici.
Exercice 1.2: Parmi les fichiers qui accompagnent cet ouvrage et que vous aves téléchargés sur
‘wwwesas-srcom puis décompressés d un emplacement sur vore disque dur, il apparatt une table
CHAPL
1. Réalisee un PROC PRINT sur cette table.
2. Owvrez-la au moyen de la fenétre VIEWTABLE.
S puis par «Poste de travail»... Le contenu de la
qui vous permettront de trouver les solutions aux
table CHAPI vous fournira des
deux premidres questions
1.5 Compréhension approfondie du cas simple
tionne votre résultat- nos différents exemples n
gestion des valeurs manquantes dans une table SAS.
‘ogramme 1.6
90 wh 38
1.5 Compréhension approfondie du cas simple @ 29
Le programme 1.6 représente le cas standard : par enregistrement, nous avons cing
champs - cing variables sont déclarées aur moyen de Pinstruction INPUT.
Programme 1.7 Résultat 1.2
Os ot 8
Dans le programme 1.7, nous indiquons a SAS quiila trois variables &saisir : cela fat,
SAS passe & lenregistrement suivant et néglige les champs en fin de ligne.
Dans le programme 1.8, nous avons indiqué a SAS quil avait cing variables & saisir
sill ne trouve pas information dans lenregistrement, il passe a la ligne suivante et
donc a Penregistrement suivant pour rechercher cette information.
A partir de ces deux exemples, vous devez. comprendre ceci: si, dans votre ligne
__ INPUT, vous avez spécifié un nombre excess ou insuffisant de variables par rapport
__aunechamps contenus dans un enregistrement, vous Vous exposez certains problemes,
comme le montre le programme 1.9.
amme 1.9
Résultat 1.4
os xt eS
x x2 xk 5 x6;Programme 1.13,
para
est impératif qu
Ie cadre simple qui
raleurs manquantes soient marquées par quelque chose. Dans
llement (les champs sont séparés par des espaces),
des valeurs manquantes est le point («.»), quel que
type de variable (numérique ou caractére) que vous avez & créer.
Résultat 18
Ye $2 20 wor
+ 4 2 3. 8s
2 6 2 8 3
3 2 4 15
4 7 6 19 2
SoM Re. me
Lavariable X1 est une variable caractére puisque nous avons ajouté le signe $ & la suite
de X1 dans Tinstruction INPUT. Vous constatez. que les points qui apparaissent sur
cette variable pour les enregistrements 3 et 4 ont été remplacés par un «vide » (signe
des valeurs manquantes des variables caractéres). Pour les variables numériques, le
point est conservé comme signe de valetir manquante.
Exercice 13 : Dans "état actuel de vos connaissances, de quel type peuvent ére les variables de la
table MISS que nous présentons ci-dessous ?
nom mo mw mB 26
‘ 1° 5
2 4
st 2 :
a 7
1.7 Variables numériques et variables caractéres
Le premier programme présenté dans ce chapitre (voir section 1.4.1) vous a incidem-
‘ment montré quil existait au sein des tables SAS deux types de variables les variables
‘exercice 1.3 vient d’attirer votre attention
sur le fait que les valeurs manquantes étaient saisies dfféremment en fonction du type
de la variable. Dans la derniére section de ce chapitre, nous préciserons les differences,
profondes qui distinguent les variables numériques des variables caracteres.
Les variables numériques ont pour modalités des nombres. Les variables caractéres
ont pour modalités des chaines de caractéres, qui peuvent comprendre des lettres,
des chiffres et des signes spéciaux (en fait, n'importe quel caractére possible). Dans
ce type de variable, vous pouvez enregistrer une chaine comportant jusqu’a
32.767 caracteres.
Attention cependant : si une variable ne contient que des chiffes, cela ne signifie pas
que cette variable est foreément numérique. Vous pouver ainsi choisir d’encegistrer
des données numériques dans une variable caractére (mais i] vous sera par exemple
ible de calculer une moyenne sur une variable caractére, méme siles modalités
ont Fapparence de chiffes).
Sans spécification particuligre, vous pouvez faire comprendre & SAS les données
suivantes comme modalités d’une variable numérique
2-23 n0aa 231 23084
Si vos données a priori numériques présentent une autre forme, vous devrez utiliser
des INFORMAT (voir section 2.6), filtres qui expliquent & SAS comment ces données
doivent étre traitées pour devenir modalités d'une variable numérique au sein d'une
table, Ce seta notamment le cas pour les données ayant la forme suivante
wee nese 3,6
Sivous tentez de faire «entrer dans une variable numérique ce type de donnée, vous
observerez dans votre JOURNAL un message tel que :
S17 ATA toto;
318 eur x;
319 cams;
“20TE: Do
REGLE :
328
3. ERROR_=T NL =1
Ce message indique qu’entre les colonnes 1 et 3, vous lirez une donnée que SAS ne
peut pas interpréter telle quelle pour la placer dans une variable numérique. La régle
ajoutée dans ce message vous permet de voir que dansla donnée «1296», jy a quelque
chose que SAS ne comprend pas :cest bien entendu le signe %.
est extrémement important, lors de la phase de construction de vos tables, @attri-
buer & chaque variable son type exact. Toute donnée numérique doit étre enregistrée
dans une variable numérique. Dans les variables caractéres, vous ne dever enregistrer
‘que du texte
2.31
-€125,000.00
Deméme, lorsque vous travallez avec une table que ’on vous transmise, vous devez
connaitre le type de chaque variable. Bien souvent, un simple examen des données de
la table ne suffit pas, car les apparences sont généralement trompeuses : vous avez en
effet la possibilité d’imposer des FORMAT & vos variables qui vont agir sur leur
présentation (voir section 5.3). Voici par exemple une table sur laquelle nous avons
demandé l'exécution de la procédure PROC PRINT :
tat 1.9
“obs cate sone iss virgule
1 e1.234,50 A428, 50
2 22,045,805 245,80
Malgré la présence du signe / dans la variable DATE, du signe € (SOMME)
virgule (SOMME et VIRGULE) et d'une lettre A (MISS), ces variables s
numériques.
Lexamen d'une table & partir de la fenétre VIEWTABLE peut habituellement vous
renseigner. En effet, ls modalités des variables caractéres y son
et celles des variables numériques le sont a droite (voir figure
section 1.3 pour34 01S
une illustration). Pour plus de streté, vous pourrez effectuer un PROC CONTENTS
sur votre table (voir section 5.1). Voici par exemple un extrait des informations
obtenues d'un PROC CONTENTS sur la table que nous avons présentée dans le
result
Résultat 1.10
rocéure CONTENTS
Liste alphabéeique des variables et des attributs
N variate Type Long. Format
1 date Ws 8 comvyse
3 mis ca 8
2 gomme Kur 8 EuRoK9.2
4 virgute Nun 8 Wun7.2
‘ion & la casse des modalités des variables caractéres : si majuscules et
‘ont aucune importance dans les noms des tables et
variables, ce n’est pas du tout le cas pour les modalités elles-meémes. La modalité
«Toto» mest absolument pas équivalente & «TOTO:
Concernant également les variables caractéres, [Link] si vous faites référence dans
vos programmes a des modalités particulitres, celles-ci doivent nécessairement
apparaitre entre quotes (simples ou doubles).
TF XR THEN
Cette instruction signifi: sila variable X a pour modalité A, alors..
1 A THEN
Cette instruction signifie :siles variables X et A présentent la méme modalité, alors...
pris comment SAS fonctionne par défaut lorsqu’
crée une table qui doit contenir des variables numériques et des variables caractéres.
‘Nous avons aussi vu qu'au moyen d’options, il était possible de modifier ce fonction-
ement par défaut. Nous pouvons donc a présent nous intéresser & des cas moins
standard,
Aller plus loin dans k
création de tables SA‘
sommaire de ce chapitre +
La création d'une table SAS a partir d'un fichier de données
“Autres indieateurs de séparation des champs
23. Lesenr
2.4 Plusieurs enregistrements pour construire une observation
srements formatés en colonnes
‘ion de tables
importation et export
28 Le débogage des programmes de création de table
“es données que vous utiliserez pour créer une table SAS n’auront pas toujo
Ta forme indiquée dans le premier chapitre. Ce deuxitme chapitre décrit les outils
grammation utiles pouirtraiter des cas séloignant du cas simple afin de créer
ables SAS. Nous préciserons plus avant Pobjet particulier de ce chapitre dan:
section 2.1.2.
1 Lacréation d’une table SAS
a partir d’un fichier de données!
= 3 part ee
1.1 Principes
inons que vous ayez 10 000 enregistrements a faire entrer dans votre table
{que ceux-ci se trouvent dans un fichier au format TXT sur votre disque dur. 8
tons ce genre de données comme ci-aprés.test [Link]';
le commencera alors de la maniére suivante :
Vécriture du chemin DOS complet dans Pinstruction
rame le montre le programme 2.5.
Programme 25
PILE n'est pas obli
Ceprogramme peut créer une tables le fichier de données se trouve & emplacement
par défaut. Cetemplacement est indiqué au bas de votre éeran + normalement,a droite
oir figure 2.1), mas il peut apparaitre gauche si vous avez fal disparate la ligne
de message.
Figure2.1 + Emplacement par défout.
En double-ciquantsurl'emplacement par défaut, vous powvea le modiferet. indiquer,
pare le dossier qui contient vos fichiers de données: ainsi, lorsque vous cto nee
[Os ables seul le nom du fichier sera nécessaire (vous naurez pas bein de préciser
echemin DOS).
2.1.2 LINPUT BUFFER
INPUT qui permet le chargement de données extérieures 3 SAS
(via CARDS ou INFILE) dans l INPUT BUFFER. Par défaut, Sas charge un seul
frucsistrement la fois (de 256 caractees par défaut, puisque LRECL=2'%),
{lest extrémement important de comprendre que SAS traite les donates «ala
olden: Vexécution de votre programme SAS prend un enregistrement ot oenioe le
teas ran Ge Wous avez écrit uniquement sur cet enregistrement. Une folscelulel
‘ait un nowvel enregistrement est chargé et le programme est nowvesn eee
tur laquelle nous reviendrons principalement d
une observation, par défau, il n'a aucune informat
les données qu’ a dgjatraitées,
Ye fecours aTINPUT BUFFER alintervient qu’au moment dela création une tab
A partir d’un fichier extéricur & SAS ~ il nest pas u
Partir d'une autre table ot lorsque vous modifier une
Partez de V'idée que les enregistrements présents dans
ment incompréhensibles tes quels. Vous alle devoir
4quilui permettront de comprendre commen
XS pout etre transformés en données SAS. Nous taitons dans ls sections qui
nombre d'éléments nécessaires a Vnterprétation des données four
dans INPUT BUFFER. Pour interpreter ces données SAS doit en
ir quel este séparateur de champs: Tespace(séparateur par dfaut) ou aut
chose ? Voir section 2.2
* Savoir oi et comment, dans PINPUT BUFFER,
variables saisir. Voir section 2.3.
INPUT BUFFER sont absol
iner & SAS un ensemble de cle
retrouvera les champs de:
* Comprendre organisation des données: un enregistrement pour une observa
tion (cas général) ou une autre organisation ? Voir section 2.4
* Comprendre les signes de valeurs manquantes, Voir sect
* Savoir sil doit interpréter tel ou tel champ pour co
i ion passera alors pat des INFORMAT. Voir:
la modalité SAS ; cette
n 2.6,
‘ions INPUT et INFILE et les INFOR-
lés permettani
{es bonnes clés, SAS ne pourra pas interpréter correctement vos données et vag
ne sera pas Pimage exacte de celles-ci,
M Albert A! 2 AB SU/AZ/2OL07
TITTTTT ny
I
Ono om M0 0 OB
n_| vremow [cum [cura [rvee] vamz | aacx
1 [awert] 1 | 2 Jae [isses[onse
Pbv
Figure2.2 + LINpUT BUFFER,Une fois interprétés au mo}
deviendront des mod:
avant d’tre versées
exéouté sur
fonctionnement du PDV.
des différentes clés indiquées, les enregistrements
iables SAS, Ces modalités seront placées dans le PDV
le & créer lorsque le programme sera intégralement
irante. Nous reviendrons au début du chapitre 3 sur le
© 2.2 Autres indicateurs de séparation des champs
EEE SB PAratlon cles Champs _
Nous avons vu que le séparateur de champs par défaut est espace, et que le sépara-
teur de champs permet & SAS de savoir quand prend fin une modalité. Vous rencon-
trerez trés certainement des fichiers utilisant un autre séparateur de champs. Des
jement ce type de fichiers. i vous
options d’INFILE via l'instruetion
INFILE CAROS votre_option;
2.2.1 Champs séparés par des tabulations
[Imaginons que les champs soient séparés par des tabulations (ce sera lecas dans votre
fenétre EDITEUR si vous copiez-collez d’Excel vers SAS). Si vous passer pat une
instruction CARDS, cela ne posera aucun probleme : votre programmation ne
changera pas et la table sera parfaitement créée.
Programme 2.6
En revanche, si vous cherchez a créer une table SAS &
il vous faudra utiliser E
programme 2.7).
un fichier externe a SAS,
‘option EXPANDTABS (voir
Programme 2.7
1238 XS
Soyez prudent si le séparateur est une tabulation. Vous trouverez parmi les fichiers
exemples de cet ouvrage un fichier appelé [Link] qui comprend 9 enregis.
trements et 100 champs séparés par des tabulations. Dans le premier enregist
‘ment, ces champs sont tous égaux a 1 ; dans le deuxitme, ils sont tous égaux &
44 Austres indicateurs de séparation des champs @ «
dans le roisitme, ils sont tous égaux A 3, ec. Vous pourtiez donc considére
Tongueur de chaque enregistrement est gale 199 (100 caractere ct 99 tabulations
Pour demander la création d’une table & partir de ce fichier, vous pourtier éerire
Programme 2.8.
Puis, immédiatement en dessous
= Une ou plussours 219m
84S est allé a i tion INPUT a atteint 18 fin d'une Lane.
ables.
Ta table wa pas été correctement créée puisque vous n’aver pas les 9 observation
_Brévues. SAS vous indique qu'il atronqué une ou plusieurs lignes, Demandes maine
‘moyen d'un PROC PRINT, l’édition de la table que vous venez de créer Vous
“constaterez qu’ y a en effet un probléme,
‘ss remarques reprises dans le JOURNAL sont symptomatiques ’une Tonguew
enregistrement supérieure aux 256 caractéres prévus par défaut Ilse trouve cepen-
"dant que SAS vous indique que la longueur maximale de vos enregistrement, co
égale 3 199.
‘otsque la tabulation est uilisée comme séparateur de champs, dans le JOURNAL,
i tare. Cependant, en interne a SAS, une tabula
igueur d’enregistrement est donc non pas de
res = 793 caractéres.
écifiant LRECL=793 (ou plus), votre table sera parfaitement créée, Si vous
liquez LRECL=792, votre table sera différente de votre fic
toujours dans votre JOURN: '
‘plusieurs Lignes ont été tronquéee.
onviendra donc dans ce cas de ne pas faire confiance & la longueur
Megistrement et de donner une valeur suffisamment geande & LRE
ile message repris ci22 Autres indicateurs de séparation des champs © 43
42 6 5A
Le programme 2.11 propose un exemple. X2 est numérique et vaut forcément |
2.2.2 Champs séparés par un caractére quelconque
texte avant le I est & mettre dans la variable caractére X1.
les champs sont séparés par un caractére quelconque (122232... par exemple), vous
utiliserez Poption DLME et indiquerez entre quotes le caractére utilisé
Programme2.9
Attention cependint & cette option DLM=. Le caractére de séparation que vous
apparaitre au sein des modalités des variables que vous voulez “Dan le cas présent, vous ne pourrez pas créer votre table SAS. S'i y a des espaces &
créer. La solution qui consiste & opter pour deux caractéres rares et & utiliser ensuite 'érieur des champs, vous devez absolument créer une distinction entre le sépara-
DLM= r’est pas bonne, comme le montre le programme 2.10. Er de champs et vous ne disposer. que
un fi tervenir en introduisant,
Programme?2.10 par exemy
‘une seconde v.
ne fonctionne pas
Les enregistrements sont composts d'une adresse e-mail et
COM. Si vous exécutez ce programme, vous constaterez.
comme nous le souhaitions. Un PROC PRINT donne en effet :
os enail com
ye esate
introduire un autre séparateur de
Lorsque vous indiquez deux caractéres, cela signifie en fait que les séparateurs peuvent
in des deux caractéres : ¥ ion DLM=, vous offrez a SAS une liste des ‘espace comme un caractére quelconque:
jeurs de champs possibles. Si votre séparateur de champs est une chaine d’au
deux caractéres, comme dans le cas du programme 2.10, vous pouvez utiliser
jeu de DIM=.
de créer des caracteres rares —voir par exemple ce sit
‘[Link]/codes_caracteres.htm
Pour créer un caractére rare, il sufft de taper le code & quatre chiffres correspondant
touche Alt du clavier. Par exemple, pour le caractére P :
ion d’une tabulation comme séparateur de champs ne fonction-
[Link], gui reprend les données ci-dessus, le ditse a été
nous exécuterions le
séparateur par défaut et quill peut au
s, SAS ne pourra pas comprendre la différence e; inue a considérer
ce ne fonctionne pas, option EXPANDTABS contin
apace samme un séprateur de champs Votre able ressemblea au résulat 2.1
+ oat
2
aa
édi 1 quelcongue ou via FSLIST
Vous devrez ourit votre fichier avec un éditeur de texte quelcongue ou via FS
{voi ection 2.8) et remplacer votre tabulation par un carstive ql rons perveta
r ion DLM=. Plus simplement, vous pouvez ouvrit le fichier el
cas Penepatie au format XLS, et ensuite uiisr le module d'imporaion (voir
est aussi possible d’ouvrir directement le classeur Excel & partir de
2.2.3 Champs séparés par un point-virgule
i i agnée de
vos données sont dans un fichier, une instruction INFILE aecompagnée
Topton LM" tin, (ous pouveressyer avec le fichier €accompagnement
[Link]) Sil vous faut inclure les données dans votre programmes
vous devrez utiliser conjointement DLM=etl'instruction CARDS40u DATALINI
Programme 2.15.
‘que la plage de données a saisir est terminée.
© 2.3 Les enregistrements formatés en colonnes
oes eae g ee
i i ti regist stent : les enregistre-
eax principaux formats d‘organisation des enrepistrements existent; les envegintt”
23 Lesenregistrementsformatés en colonnes # 45
présentent plusieurs avantages, le premier d’entre eux étant la possibilité de saisir des
modalités caractéres contenant des espaces, puisque vous n’avez plus besoin de
séparateurs de champs.
2.3.1 Cas général
istrements présentés en colonnes ont généralement la forme suivante :
aoBonea pene Qe nent geet enna
Woover Hoover
Noreatter Hereafter
Matt Daron 2ore 8.3
Invictus Invictus 2009 N75
Gran Torino Gran Toréne 2008 09.4
Changeling Lécnange 2008,
Letters fron Iwo Jina Lettres d'Ivo via 2008
Flags of our Fathers uénosres ae nos péres 2006
us aver la possibilité de
ent séparer les différents champs que
ifférence entre des données COLUMN
tracer des lignes verticales qui vont p:
‘vous aver a saisir. La figure 2.
INPUT et des données LIST INI
Figure 2.3 + Données COLUMN INPUT et LISTINPUT.
‘Les données avec lesquelles nous allons construire une table SAS sont relatives aux
ept films réalisés par Clint Eastwood entre 2006 et 2012. Le titre original occupe le
nes 1 A 21; le titre francais, les colonnes 23 8.43
les colonnes 71 et 73!.
Hous avez saisi les données avec CARDS, une petite fenétre dans le coin inférieur
de votre fenétre EDITEUR vous indique la ligne (Ln) sur laquelle vous vous
itvotre curseur (voir figure 2
anes qui contiennent vos modalités,
Drésentes dans un fichier extérieur, vous avez la possibilité de
jurir aux outils FSLIST et NOTEPAD, présentés dans la section 2.8.46 # AS 23 Lesenregistements formatésen colonnes # 47
‘Nous ne pouvons pas créer de table SAS avec les outils vus jusqu’a maintenant. En effet, La ligne @'INPUT suivante organise les variables dans votre table selon un ordre qui
il faudraitsaisir des champs particuliers qui contiennent des espaces ; ot jusquici, ‘yous sera peut-étre plus utile
espace est considéré comme séparateur de champs. Estayons tout de méme. f
Créez dews tables SAS
les ciscontre:
‘aide des données ci-dessous (fichier [Link]) pour
boa § actaus § sanne so oe sas
retea §acteur § amnee noces 1 1 45 gro> ate Tabs ase
2 ger 68 eet ot eros
S25) 8 amt gh 8 gh aeons tg
mn 4g 0 ge fat Joe
5 su Sr asst lms danas
‘Le résultat 2.2 reprend les résultats obtenus du PROC PRINT. 6 52416 (9387 pq 6 opg) «4189820 8
Résultat 22
Rien |
etre, 2.3.2 Le pointeur +X
be titres Fea secteur amnee rote
1 Hoover Hoover ore
2 Weraatte Herestte ore
3 imictus Inviewe 008
4 Gran Torino
5 hangeni chang 206
a Letters, fron :
7 Flags or Ten
SEES Hoover Hoover Leonardo OiCaprio 2012 86.6
tion INPUT indique a SAS que les champs sont séparés par des espaces. I
Vi apres l'indication de position 1-21 est un pointeur. Il permet un
enregistre donc, dans la variable TITRE_US, ce it, jusqu’a ce qu enregistrement présent dans ' INPUT BUFFER. Nous demandons
espace ;il enregistre pour TITRE_FRA le deuxiéme mot dela ligne, puis le mot suivant le TITRE_US, puis de se déplacer
en tant que modalité pour la variable ACTEUR, etc. rune colonne pour débuter l'enregistrement de la variable suivante (TITRE_FRA).
Puisque les données sont ici présentées en colonnes, nous allons adapter notre il nest pas nécessaie de recourir au pointeur +X pour les données utilisées
programmation et spécifier les emplacements colonnes des variables’. La ligne INPUT celles.
devient ainsi:
INPUT titre us $ 4-21 titre tra § 29-48 actour $ 46-62 annew note 71-73;
Et votre table SAS sera parfaitement créée. Il n'est pas utile de préciser dans la ligne ACTEUR, vous précisez & SAS que le champ est placé
INPUT emplacement de la variable ANNEE, puisque les champs correspondant 4 incluses). SAS n'a pas besoin d'un séparateur de champs (espace
cette variable ne comprennent pas de blancs. Lorsque SAS a terminé de saisir la Par défaut) pour clore cette saisie. +1 demande un déplacement d'une colonne (SAS
variable ACTEUR, i passe systématiquement ls blancs qui peuvent suivreilnentame 'ANNEE peut etre lue.
la saisie de la variable ANNEE que lorsque celle-ci commence effectivement. Des
précisée pour ANNE, SAS a donc besoin de l’espace
it pour clore sa saisie. Trois colonnes apparaissent entre
*t NOTE (deux espaces et la lettre N), mais SAS ne doit se déplacer que de
données présentées en colonnes ne vous obligent donc pas & préciser systématique-
‘ment les emplace lonnes de chaque champ. Nous spécifions Pemplacement
de NOTE pour 'N’ qui préctde les notes. Cest ici obligatoire si 'on souhaite
enregistrer ces notes dans une variable numérique.
Lorsque vous réalisez. un PROC PRINT, les variables saffichent suivant Pordre dans
Jequel elles sonteréées (et donc dans lequel elles apparaissent dans instruction INPUT),
Si vous souhaitez que vos variables soient selon un ordre différent, cela ne
pose pas de réel probléme tant que vos données sont de type COLUMN INPUT.
lire entre les colonnes 64
space qui suit pour comprendre que la saisie
odalité est terminge : vous devez indiquer +3 pour vous positionner au début,
mp correspondant a NOTE,eu
WUT
Horeatter
En cequi concerne donclles deux derniéres variables, les instructions INPU' suivantes
sont donc parfaitement équivalentes :
annee +2 note;
T anee 64-67 +3 note;
‘ous n'y prenez pas garde, et insérez +3 dans la premitre instruction ci-dessus, la
saisie de NOTE ne commencera qu’a la 72 colonne : vous perdrez la partie entiére
dela note,
champ pour clore la saisie de ce champ et pourrez déterminer le
nombre de colonnes @ sauter.
Enfin, rappelons que l'utilisation des +X ne se justifie pas ici. Cette procédure présente
quand, par exemple, une partie de lenregistrement est & négliger et
quelle est d’une longueur constante.
s ci-dessous (fichier [Link]), eréez une table SAS
os x
2 @ 19
‘asa AZERTYUIOP 14 2 aaa
fanaa AZ RT UDP 15 4 aan 15.
2.3.3 Un cas particulier : le dernier champ est de longueur
variable
Imaginons que notre fichier de départ ait cette forme particulitre :
oocnten en Bennt one Qt fet
Hoover zor 8.8 Leonardo biGeprio
Horeatter wate Danon
Gran Torino
organ Freeman
wo Jina
Nénoires de nos péres 2006 7.2
yan Philippe
Vous pourriez penser quil n'y a aucune différence, et que nous devrions pouvoir
recourit au méme type de programmation. Cela ne fonctionne pas comme vous le
montre Pexercice 2.3.
Bxercice 2.3:
rez les données c-dessus en table SAS ~ données sur votre éeran vous passes dane par
bien. En fait, lorsque vous passez par un INFILE, sile dernier champ de chaque
tres mont
COVER d’INFILE, SAS
Pourra forcer la lecture de données présentes dans l'enregistrement suivant.
Pour définir les colonnes entre lesquelles vous devez
‘yous allez prendre le nom le pl
Dans votre fichier, chaque m
(72-56+1). SAS, pour remy
Je nom de Vacteur principal,
long et constater qu'il occupe les colonnes 56 & 72.
lité @’ ACTEUR ne prend pas forcément 17 caractéres
iable, va alors chercher le premier bloc de
et peut passer pour cela a Penre-
lorsque vous demandez un PROC
gistrement suivant, Cela vous explique pourai
PRINT, vous observez le résultat 2.3.
23
titres
‘titre_tea note acteur
Hoover
Hecesster
Gran Torino
Letters’ from Ino Jina
Hereafter
Gran Tersno
Lettres tao vina
Leonardo oicaprio
pption TRUNCOVER d’INFILE indique SAS qu'il ne doit pas rechercher dans
nregistrement suivant si on Iui demande de fire un certain nombre de caractéres
pour une variable et quill ne trouve pas exactement ce nombre de caractéres. Atten-
» si option TRUNCOVER peut souvent vous étre utile ors d'un passage par une
instruction INFILE pour créer une table, elle vous sera parfaitement inutile lorsque
‘Yous passerez par un CARDS : SAS ne force pas la lecture sur Penregistrement suivant
manque des caractéres lors d'une entrée de données par CARDS, SAS ne force
lecture sur Penregistrement suivant que s'il ne rencontre aucun caractére (voit
section 1.5).
2.3.4 Le pointeur @x
rrements sont présentés en colonnes il existe une seconde manigre
‘eur d’un entregistrement. Ainsi:
064 annce titre_us §
Le pointeur @X indique a SAS quiil do
variable dont le nom suit. Cette ins
pointeur +X pour passer d'un champ & un at
souhat ici,
. Vous devez uniquement connai
ou les notations de colonnes si vous
lans un ordre différent de celui de vos
la position a laquelle le champ commence.
Les données sur lesquelles nous nous appuyons dans ce chapitre ne nécessitent pas
ibsolument le recours aux pointeurs @X. Un pointeur @}
que vous
‘espace est aussi séparateur de champs. Enfin, comme le montre
notre exemple, ce type de programmation permet aussi de «revenic en arritre» et
dleffectuer un second passage sur
Tt aussi posible derevenie ven an lepoineur +X:-X weit pat mai 4(-X) et possible2.3.5 Une seconde application de @X : @’texte’
ivantes
ton: Valerie renaraue: CC f,pzeiojtpoze fepithozet
22 foeithes poopop prénot: Sylvain nortsrfSzeffol renarque: AC
Terarque’ BB etherfioe’ f08"'pbh
5" dfprérom: Claire renarque: A pou"}én
Un bug informatique a créé ce fichier dans lequel apparaissent sur chaque ligne un
prénom et une remarque. Vous pouvez malgré tout en faire une table SAS en profitant
des récurrences ‘prénom:’ et ‘remarque?.
unng)ug'h
ramme2.17
‘Nousavonsici une seconde application du pointeur @ dans une instruction INPUT. Nous
avons vu 'intérét d'un @5 X1 qui demandait a SAS de se placer en cinquiéme colonne
pour lire la variable X1. @’prénom:” ELEVE demande & SAS d’avancer dans I'enregis-
trement et de trouver ‘prenom:’ pour ensuite lire la variable ELEVE (:$10. est un
FORMAT — voir section 2.6)
Bvercice 2.4 : Essayez cette mancewvre dans le fichier [Link]:
gistrements du fichier et bien égal au nombre d’observations de votre tbl
rogrammation de fgon que votre table sit idle a votre fichier de depart,
e que le nombre
‘Modifez votre
Bxercice 25 @X vous sera particuliérement utile lorsque vous construirez des tables au moyen de
données contenues dans des pages HTML, par exemple. Vous trouverez i Padresse suivante une
{faille HTML contenant des données que Von voudrait bien utiliser pour construire une table.
[Link] html
sit le cde source de cette page et Favons enregisté dans un fichier texte [Link].
Les données que nous souhaitons wor saficher dans une table SAS ressemiblent a ceci
BLP 42008nb8p;
Sen Rivers ~
Vous n'aves pas a rédiger de programme (pour Vinstant... voir exercize 2.15, section 2.62) destiné
4 construire une table. Vous devez simplement examiner ce fichier afin de comprendre comment
sont organisées ls données et voir quel léments vont permettre a SAS de repérer la référence du
disque (BLP 4206 ou blp-4206), le nora de Tenom de album
Nous
contourse/a>
2.4 Plusieurs enregistrements pour construire
une observation
Dans toutes les tables construites jusqu’’ maintenant, chaque observation a to
&€ obtenue au moyen d’un enregistrement unique (une ligne de don
allons voir dans cette section des cas dans lesquels plusieurs observatio
construites au moyen d'un méme enregistrement, et des cas dans lesquels il faudra
combiner plusieurs enregistrements pour construire une observation.
_ 2.4.1 Unenregistrement, plusieurs observations : @@ et @
dun espace,
Exemple 80211 1903 -9999 50211 1904 2507 8021
Sur cette ligne, 80211 est le numéro de la base
1905 4876 80211 1905 5023 80211 1907 6356.
‘année d observation ; -9999 désigne la
ions annuelles que vous observerez,
CCréec une table SAS avec ces données Ly « 2 299 observations. Lenregistrement que vous avez &
un peu moins de 38 000 caractores.
posées dans cet exercice
1 que vous allez rédiger pou
westion posée ne fonctionne pas.
Nous avons vu que, par défaut, lorsque SAS analyse un
negistrement et passe 8
ne voulons pas que SAS pas
Cela se fera au moyen de
Puisque la longueur de Penregistrement dépasse 256 caractéres, vous devez spécifier
un LRECL suffisamment important
A Bxercice 2.7 : Vous trouverez dans le fichier [Link] les tempéra