You are on page 1of 18
* AMUeBLBUION SETVEF » eC «DAD Enterprise Data Integration Server ». w-sas.com/france/software/technologies/dw-html Forecast Server est une application d’aide & la production de prévisions. #sas.com/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/support.sas.com/rnd/app/studio/studio.html 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 contient lest 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: wwwtse-.com, 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édemment aoe 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 WoRK.TEST 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 documents Test 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 pour 34 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, notez.que 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 B.txt'; 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é TEST100.TXT 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 ci 22 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 ‘www.toutimages.com/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- TABU.TXT, 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 POINTVIRGULE.TXT) 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 EXO2I.TXT) 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 AZERTY.TXT), 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 possible 2.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 ABCD.TXT: 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. Ittpstiowv.sas-s.comfilesbluenoteL html sit le cde source de cette page et Favons enregisté dans un fichier texte BLUENOTE.TXT. 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 ORLEANS.TXT les tempéra

You might also like