SAS base Introduction à SAS SQL SAS IML
|
|
|
- Aurélien St-Pierre
- il y a 10 ans
- Total affichages :
Transcription
1 SAS base Introduction à SAS SQL SAS IML Introduction Le système SAS est un ensemble de modules logiciels pour la gestion et le traitement statistique des données. À travers différents types d interfaces utilisateur, il permet l écriture de programmes SAS qui exécutent : les saisies, importations, interrogations, manipulations, transformations de données, les éditions d états, de rapports financiers, de graphiques, les analyses statistiques, modélisation, prévision, des applications spécifiques définies sous forme de macro-commandes et pouvant être pilotées par menu. Il existe plusieurs modules qui permettent un traitement de l information sans écrire une ligne de programme : les modules Insight, Enterprise Guide et Enterprise Miner ont été élaborés en ce sens. Il serait possible, en première approche, de se contenter de cette utilisation élémentaire mais l usage montre que ces solutions sont nécessairement limitées et qu un usage professionnel, associé à des contraintes spécifiques, rend incontournable l usage d une programmation basique. SAS propose plusieurs langages de programmation, qui se complètent et s enrichissent mutuellement. le langage de base, qui couvre 95% des utilisations et des besoins quotidiens autour de SAS : extraction, transformation, croisement de plusieurs sources d information, production et mise en forme de résultats. Le langage macro, série d instructions dédiées au paramétrage d un programme. Le SQL (Structured Query Language), commun à de nombreux logiciels de gestion de bases de données (SGBD), permettant également l extraction, la transformation et l appariement de données. L IML (Interactive Matrix Language), langage matriciel permettant de nombreux calculs mathématiques et statistiques. Ce cours abordera ces 4 langages, en insistant tout particulièrement sur 2 d entre eux : le langage de base et le langage macro. A l issue de cet enseignement, vous devrez être capable de manipuler les données à travers le langage SAS de base, paramétrer les traitements avec le langage macro, effectuer des traitements matriciels, et faire des traitements basiques de données avec SQL. Il est fortement recommandé, surtout dans la période de prise en main du logiciel, de consulter les manuels de SAS ou la documentation SAS en ligne afin notamment de prendre connaissance de la syntaxe et de l ensemble des options disponibles pour les procédures. La documentation SAS en ligne est disponible à l adresse : Ce cours abordera les points suivants : l import de fichiers textes en tables SAS et l export de tables SAS en fichier texte, l utilisation de la proc import et de la proc export pour l import/export de différents types de fichiersl appariement de fichiers SAS et la transformation des variables (étapes DATA). les principales procédures d édition de tables, d analyse univariée et bivariée et de gestion de tables (étapes PROC). le langage SQL (Structured Query Language) de gestion des données informatiques des SGBD relationnels. le langage matriciel (module SAS IML). les graphiques avec SAS GRAPH. le macro langage SAS. 1
2 Au cours du TP, nous reprendrons ces différents points du cours. En outre : nous verrons comment utiliser le menu Import de données et Export de données de SAS pour importer et exporter des fichiers sans passer par la programmation dans l éditeur. nous aborderons le module SAS Insight. nous aborderons d autres procédures graphiques et statistiques couramment utilisées que nous n évoquerons pas en cours, et notamment : PROC PRINCOMP (analyse en composantes principales) PROC CORRESP (analyse des correspondances) PROC REG (régressions simple ou multiple) 2
3 Préalables 1. Les fenêtres de SAS 5 fenêtres s ouvrent au démarrage de SAS (ci-dessus après avoir choisi Fenêtre / Mosaïque verticale) : la fenêtre de programmation (éditeur) : entrer, éditer, compiler les programmes de SAS. Deux fenêtres de programmation sont disponibles à partir de la version 8 de SAS : le Program Editor et l Enhanced Editor. Dans l Enhanced Editor, des lignes horizontales marquent les grandes étapes du programme. Les carrés contenant un signe moins ou plus situés en marge du programme permettent de visualiser uniquement la première ligne de chaque étape, ou l intégralité du code de cette étape. Il est possible de condenser l ensemble d un programme via le menu Edit > Collapse all, et de le remettre en vue intégrale via Edit > Expand all. 3
4 la fenêtre Journal (ou fenêtre Log) : analyse de la syntaxe du programme exécuté (messages SAS après compilation). Les principaux messages du Journal sont : les notes (en bleu dans SAS Windows) : aucune anomalie dans le traitement demandé, les avertissements (Warnings) : il est possible que des erreurs non fatales aient eu lieu pendant le traitement, et les erreurs (Error, en rouge) : des erreurs graves de traitement ont eu lieu. De plus, SAS recopie (en noir) le code qui lui a été soumis, précédé de numéros de lignes incrémentés à chaque nouveau programme exécuté dans la session. Le message Error signale une erreur qui a stoppé l exécution de cette étape du programme. SAS traitant les étapes de manière indépendante, il a pu exécuter l étape suivante en dépit des erreurs rencontrées. Il en découle souvent des erreurs successives dans la fenêtre Log, dues à une erreur dans une des premières étapes du programme. Il est donc conseillé de reprendre la Log depuis le début de l exécution du code en question. C est d autant moins évident que SAS se positionne à la fin de la Log après exécution d un programme. Le message Warning indique une erreur qui n a pas stoppé l exécution de l étape parce que SAS sait gérer lui-même ce type d erreur (qui consiste souvent à générer des valeurs manquantes). La fenêtre Log n est pas purgée automatiquement pas SAS à l exécution d un nouveau programme. Les messages sont donc affichés à la suite de ceux concernant l exécution du code précédent. Il est souvent pratique, pour retrouver le début des messages, d effacer le contenu de la fenêtre (par le menu Edit > Clear all). la fenêtre Sortie (ou fenêtre Output) : sorties, listings, résultats après compilation des programmes, rapports générés par les procédures SAS et les étapes DATA. Elle est complétée par deux autres fenêtres pour l affichage des sorties : la fenêtre Graph pour les graphiques et la fenêtre Résultats (ou Results) qui montre sous forme arborescente les différentes sorties engendrées par le programme. 4
5 Sur l exemple précédent, on distingue : la fenêtre Output et sa police unique (SAS Monospace), la fenêtre Results qui montre sous forme arborescente les différentes sorties engendrées par un ou plusieurs programmes. La suppressions des sorties par morceaux est possible (faire un clic droit sur un des éléments de cette fenêtre et choisir Delete dans le menu contextuel), la fenêtre Graph qui montre la sortie d une procédure graphique de SAS. La fenêtre Output, comme la fenêtre Log, ne se vide pas à l exécution d un nouveau programme, mais ajoute de nouvelles sorties à la suite de celles existantes. Il est donc possible de purger cette fenêtre (par le menu Edit > Clear all). la fenêtre Explorer : emplacements physiques des répertoires, création de raccourcis, voir/ouvrir/déplacer/copier/supprimer des fichiers SAS. Elle permet de naviguer parmi les données SAS et en particulier de visualiser les tables SAS. 5
6 2. Les menus et les barres d outils Les menus disponibles sont variables en fonction de la fenêtre active. Les menus disponibles sont FILE, EDIT, VIEW, TOOLS, SOLUTIONS, WINDOWS et HELP. S y ajoute le menu RUN quand l éditeur est actif. FILE contient les commandes nécessaires à l ouverture d un programme, sa sauvegarde, l importation d un fichier de données, son exportation, et la commande permettant de fermer la session SAS. EDIT regroupe les commande d édition usuelles (couper/copier/coller, annuler) ainsi que celles pour le repli et le déploiement d un programme. On y trouve aussi la commande CLEAR ALL pour purger une fenêtre. VIEW permet de basculer entre les différentes fenêtres de l environnement de programmation, et également d ouvrir à nouveau une fenêtre fermée. TOOLS regroupe l appel à divers assistants SAS (retouches de graphiques, requêtes via une interface etc ). On y trouve également, dans un sous-menu OPTIONS, les réglages de la session SAS (aspect des fenêtres, préférences de l utilisateur, tableau des options système ). RUN permet l exécution du code tapé dans la fenêtre d édition active. SOLUTIONS permet d ouvrir diverses interfaces gravitant autour de SAS. WINDOW gère le fenêtrage de l environnement et permet comme VIEW de basculer d une fenêtre à une autre. HELP renvoie aux divers éléments de l aide en ligne de SAS. La barre d outils regroupe les icônes standards (nouveau, ouvrir, enregistrer, couper, copier, coller, annuler, imprimer, aperçu avant impression). Quand un éditeur est actif, l icône ci-contre s ajoute à la barre d outils : il permet l exécution du programme écrit dans la fenêtre active ; si une partie du programme est sélectionnée, alors seul ce morceau de code est soumis à SAS. A gauche de la barre d outils, une fenêtre rectangulaire, pouvant accueillir une seule ligne, est appelée fenêtre de commande. Elle trouve son intérêt dans les versions dépourvues de menus. Dans ces versions, elle apparaît en première ligne de chaque fenêtre, sous la forme d une ligne blanche précédée de COMMAND. Elle permet, en y tapant et soumettant des commandes, d obtenir des manipulations semblables à celles proposées par les icônes de la barre d outils, et par certains items des menus. Par exemple, une commande utile est KEYS, qui permet d afficher la liste des raccourcis clavier de SAS. 3. Modules SAS est un logiciel organisé en modules qui sont des groupes de fonctionnalités. Ce système sert de base de tarification, mais aussi d organisation logique. Les procédures sont rattachées à un module et ne sont donc pas toutes disponibles sur toutes les installations de SAS. Par exemple, la proc IML, qui permet d utiliser le langage IML, n est disponible que si le module IML a été installé. Le logiciel SAS est loué à l année, sous forme de licence. Cette licence autorise l emploi, pour une durée limitée, de certains modules. Dans la version 9, un fichier SAS Installation Data spécifie les modules contenus dans la licence. Il remplace le programme Setinit des versions antérieures. Les principaux modules de SAS : SAS Base : pierre angulaire de SAS, ce module contient les instructions pour la manipulation de données, les statistiques descriptives élémentaires et l édition de rapports. Ce module permet de programmer dans le langage SAS de base, ainsi que dans les langages SQL et macro. 6
7 SAS Stat : il regroupe les procédures de modélisation (régressions diverses), de classification (regroupement d individus semblables) et de statistiques descriptives. SAS Graph : ce module permet l édition de graphiques de toutes sortes : nuages de points, courbes, diagrammes circulaires et en bâtons, cartes géographiques. SAS Access : cette série de modules permet l importation et l exportation de données d autres applications. SAS Connect : le module CONNECT permet de faire fonctionner SAS en mode client/serveur. SAS ETS : ce module statistique regroupe entre autres les fonctionnalités d étude des données temporelles (ETS : Econometrics and Time Series). SAS FSP : ce module permet la manipulation de données en plein écran (FSP : Full Screen Products). SAS AF : ce module permet la construction d interfaces clique-bouton par-dessus SAS, sur un mode de fonctionnement analogue à Visual Basic pour les applications Microsoft (AF = Application Facility). SAS EIS : il permet la constitution et la visualisation de tableaux de bords synthétiques regroupant des statistiques et des graphiques (EIS : Execuive Information System). SAS Assist : ce module est une interface clique-bouton pour la création de programmes SAS. Toutes les manipulations sont paramétrées par menus et fenêtres de dialogue. SAS IML : ce module permet d utiliser un langage matriciel (IML : Interactive Matrix Language). SAS Insight : analyse statistique interactive. 4. SAS Enterprise Guide SAS Enterprise Guide (ou SEG) est un logiciel Windows permettant, par un système de menus et de fenêtres de dialogue, de réaliser des extractions, de croiser des sources de données hétérogènes, de produire des tableaux, des graphiques et des statistiques. Il génère des programmes SAS et intègre également un éditeur de programmes, afin d ajouter ou d amender du code. SEG produit des sorties dans les formats les plus courants : page Web, document PDF, document Word, feuille Excel. Enterprise Guide est un croisement entre SAS et Excel. Il a hérité du premier la puissance de calcul et le langage souple. SEG hérite d Excel son ergonomie dans la présentation des données, la simplicité de fonctionnement, le rôle prééminent des fenêtres de dialogue. Il est possible de remplacer toute programmation par l utilisation intensive de SAS Enterprise Guide, mais toute application constituée de menus et de fenêtres de dialogue trouve sa limite dans une opération non prévue initialement, qu il faudra à nouveau programmer. 5. Session SAS Quand on démarre le logiciel SAS, on ouvre une «session SAS». Cette session se termine par la fermeture du logiciel. Au sein d une session SAS, de nombreux réglages sont temporaires. Ils durent le plus souvent jusqu à la fermeture de la session. 7
8 6. Sorties On parle de sorties en général pour désigner l ensemble des résultats produits par SAS. Ces sorties peuvent prendre différents aspects selon les instructions du programme exécuté. Le programme peut produire : une ou plusieurs table(s) SAS ; du texte, appelé généralement listing, d une mise en forme minimale (police de caractères unique, pas de gras ni d italique). Le listing est le mode par défaut d affichage de résultats par SAS ; un ou plusieurs graphique(s) qui font l objet d un affichage séparé. 7. Les contraintes du langage SAS On ne doit pas couper une instruction par un retour de ligne, Les majuscules et minuscules, hormis quelques cas très précis, ne sont pas différenciés par SAS, Les commentaires, encadrés par les signes /* et */, peuvent être intégrés à n importe quel endroit du programme, à la seule condition de ne pas couper une instruction, La contrainte la plus incontournable dans SAS est l obligation de terminer chaque instruction par un point-virgule. 8. Concepts et vocabulaire Nous allons commencer par survoler les concepts qu il est essentiel d avoir intégrés avant de commencer la programmation dans SAS. Tout au long de ce cours, nous parlerons : de bibliothèque (ou librairie), de table, de vue, d observation, de variable, de label, de format, d une étape Data, d une étape Proc. Les premiers concepts font référence à la manière dont SAS stocke et accède aux données. Quelques instructions et manipulations sont nécessaires, comme : allouer une bibliothèque, visualiser son contenu, voir une table, voir les variables d une table. Les concepts suivants traite du décalage qui existe à travers les labels et les formats entre les données vues à l écran et la réalité qu il faut programmer. Les derniers concepts concernent la programmation, et fait la distinction entre l étape Data et les procédures, qui sont les deux grandes étapes de programmation de SAS. 8
9 1. Deux étapes : DATA et PROC Un ensemble d instructions constitue une étape. Dans SAS, on distingue deux grands types d étapes de programmation : les étapes Data et les étapes procédures, également appelées «étapes proc». Un programme SAS est un enchaînement d étapes de gestion des données (étape DATA) et d appels de procédures (étape PROC). On repère, dans un programme SAS, le début et la fin d une étape par les mots-clés DATA ou PROC au début, et les instructions RUN, et/ou QUIT à la fin Etape DATA : création d une table SAS et structuration des données Afin de pouvoir traiter des données avec SAS, il convient d abord de les mettre sous un certain format, interne à SAS. SAS possède en effet son propre système de gestion de bases de données (étape DATA), bâti sur la notion de table (SAS DATA SET nommé par la suite TABLE SAS selon la terminologie en vigueur en France). Toute étape DATA débute par l instruction DATA nom_de_table où nom_de_table est le nom de la table SAS créée. Si aucune table SAS n est créée (cas par exemple de la recopie d une table dans un fichier texte), alors l étape DATA débutera par l instruction DATA _NULL_. L étape DATA se termine par l instruction RUN. Syntaxe : DATA tablesas ; instructions diverses ; RUN ; L étape Data permet de manipuler, observation par observation, un jeu de données. Les données entrantes ou sortantes peuvent être une table SAS ou un fichier externe. Lors d une étape DATA, on pourra en outre structurer les données et notamment : importer un fichier texte pour créer une table SAS, créer de nouvelles variables, exporter d une table SAS vers un fichier texte, sélectionner une partie d une table SAS et la stocker dans une autre table, fusionner plusieurs tables SAS faire une requête sur une table SAS, On peut créer des tables SAS permanentes ou temporaires. Les tables temporaires sont effacées lorsqu on quitte la session. On appelle table SAS la représentation la plus courante des données utilisées par ce logiciel. Ces données sont organisées en lignes et en colonnes, également appelées observations et variables Etape PROC : analyse d une table SAS Une fois que les données ont été structurées sous la forme d une table, elles peuvent être analysées au moyen de procédures (étape PROC). Les procédures sont des programmes déjà écrits de SAS, à la syntaxe beaucoup moins libre que celle de l étape Data, où il faut surtout renseigner un certain nombre de paramètres et faire jouer certaines options. Les procédures, qui sont assez nombreuses (aux alentours de 200 sur l ensemble des modules de SAS), accomplissent chacune une tâche spécialisée : tri des données, listing d une table, création de formats, calcul de statistiques descriptives, analyse factorielle, etc. 9
10 Chaque procédure commence par une instruction PROC suivie de son nom, et s achève sur une instruction RUN ; qui demande l exécution de cette procédure. Certaines procédures, notamment les procédures graphiques, demandent de surcroît une instruction QUIT ; pour clore réellement leur syntaxe. Syntaxe : PROC nomprocédure <option(s)> ; instructions diverses ; RUN ;<QUIT> ; Pour la plupart des procédures, SAS propose de nombreuses options. L exemple suivant distingue une étape, une instruction et une option. Cet exemple permet l édition de statistiques sur les ventes. PROC MEANS DATA=base.ventes MEAN MEDIAN MIN MAX ; VAR mt_der ; RUN; est une étape (la procédure MEANS) sont des options est une instruction. 2. Différences entre une vue et une table Les fichiers de données lus et créés par SAS sont d un type qui est spécifique à ce logiciel : ce sont des tables et des vues. Dans les deux cas, les données sont organisées sous forme tabulaire, avec des lignes (observations) et des colonnes (variables). Si on ouvre une vue à partir de la fenêtre Explorer, on constate la similitude d aspect avec une table. C est en fait le mode de stockage qui diverge entre vue et table. Une table est une photo des données : elle stocke des données qui ne changeront plus jusqu à la création d une nouvelle version de la table. Une vue est un lien vers un ensemble de données : elle ne contient qu une requête, qui sera réexécutée à chaque accès à la vue. L avantage d une vue sur une table est double : place réduite pour le stockage et données perpétuellement à jour sans nécessiter d intervention de l utilisateur. La table, en revanche, permet un accès plus rapide aux données, et également de figer dans le temps un état : cela s avère pratique pour conserver un historique à partir de données mouvantes. Le nom d une table ou d une vue SAS doit respecter les contraintes suivantes : la longueur maximale du nom est de 32 caractères ; le premier caractère est une lettre ou un blanc souligné _.Les caractères suivants peuvent être des lettres, des blancs soulignés ou des chiffres ; dans la plupart des cas, SAS ne distingue pas les minuscules et les majuscules. Ainsi, si par exemple on a défini la variable Gini, on peut la rappeler en écrivant GINI, gini, etc. ; certains noms correspondent à des variables automatiques de SAS (exemple : _N_, qui correspond au numéro d observation dans la table SAS 1 ) ou à un certain type de tables SAS 1 _N_=1 pour la première observation de la table, 2 pour la deuxième observation, etc 10
11 (exemple : data _NULL_) et ne peuvent pas être utilisés pour nommer des variables ou des tables créées par l utilisateur. 3. Eléments d une table Les observations On désigne par ce nom les lignes d une table ou d une vue SAS. Chaque observation correspond à une unité de comptage ; en statistique, on parle d «individu statistique». Chaque observation porte un numéro. Il est séquentiel et recalculé à chaque création de la table Les variables Les variables sont les colonnes d une table ou d une vue SAS. Chaque variable correspond à une information connue sur les observations. Toutes les variables requièrent obligatoirement trois attributs : nom type (numérique ou caractères) longueur. Une variable peut également posséder un label, un format et un informat. Le nom d une variable doit respecter les contraintes suivantes : la longueur maximale du nom est de 32 caractères ; le premier caractère est une lettre ou un blanc souligné _.Les caractères suivants peuvent être des lettres, des blancs soulignés ou des chiffres ; dans la plupart des cas, SAS ne distingue pas les minuscules et les majuscules. Ainsi, si par exemple on a défini la variable Gini, on peut la rappeler en écrivant GINI, gini, etc. ; certains noms correspondent à des variables automatiques de SAS (exemple : _N_, qui correspond au numéro d observation dans la table SAS 2 ) et ne peuvent pas être utilisés pour nommer des variables ou créées par l utilisateur. Variables caractères : On peut définir des variables caractères d une longueur de 1 à caractères. On leur affecte une valeur de la manière suivante : var1 = Paris ; /*entre */ var2 = " " ; /*entre "*/ var3 = Ile de France ; var4 = Côte d"armor ; 2 _N_=1 pour la première observation de la table, 2 pour la deuxième observation, etc 11
12 Variables numériques : SAS reconnaît les nombres sous les formes suivantes : entiers : 5683 ; entiers relatifs : -5 ; réels : 2.85 ; notation scientifique : 5.4E-1 ; dates : '24aug90'd. Une date est ainsi définie le plus souvent comme numérique. SAS stocke les dates comme un nombre de jours depuis le 1 er janvier Le label Le label d une variable est un texte libre de 256 caractères maximum, qui permet de décrire le contenu de la variable, de donner sa définition, de décrire éventuellement ses valeurs, de manière plus complète et plus lisible que ne peut le faire le nom. Le format Le format est un masque d affichage des données. Il permet d assurer une transition entre les valeurs telles qu elles sont stockées (de manière parfois peu lisible : les dates sont stockées comme un nombre de jours depuis le 1 er janvier 1960) et les valeurs telles qu elles sont affichées. On trouvera en annexe 1 les formats les plus courants fournis par SAS. En complément de ces formats, SAS propose, avec un programme (la procédure FORMAT que l on étudiera ultérieurement), de définir des formats personnalisés correspondant aux différents besoins (tranches de revenus, libellés des départements français, etc ). La longueur La longueur (length) d une variable est la place prévue pour le stockage de chacune de ses valeurs. SAS prévoit par défaut d utiliser 8 octets pour chaque valeur. Les longueurs autorisées sont : de 1 à octets pour une variable caractères, de 2 à 8 octets pour une variable de type numérique. Sous Windows, les longueurs possibles sont comprises en 3 et 8 octets seulement. L informat Un informat est un masque de saisie d une variable. C est le symétrique du format ; il s applique aux données telles qu elles sont lues lors de la création de la table SAS à partir d un fichier externe. Ainsi, pour reprendre l exemple d une date, on peut avoir une donnée stockée sous la forme qui désignerait le 25/01/2001. SAS doit comprendre que c est une date et stocker le nombre (car le 25 janvier 2001 est le ème jour depuis le 1 er janvier 1960). L informat permet d indiquer comment faire cette transformation, et particulier le fait que, dans la valeur lue, les quatre premiers chiffres sont ceux de l année, les 2 suivants ceux du mois, et enfin ceux du jour. 12
13 4. Manipulations de tables SAS Le but premier de SAS est la manipulation de données, avant même de commencer les traitements statistiques proprement dits. Ce chapitre est consacré à la création d une table SAS à partir d une ou de plusieurs sources de données, principalement à travers l étape Data. L étape Data permet entre autres : la création de tables SAS, la création de nouvelles variables, la modification de variables existantes, la fusion et la jointure de plusieurs tables, l importation et l exportation de données. L étape Data regroupe une série d instructions permettant la manipulation ligne à ligne d un jeu de données. L étape Data n affiche rien dans la fenêtre Output, sauf cas exceptionnels Structure et stockage des tables Une table se présente sous forme d une matrice croisant en ligne les observations en en colonne les variables. Exemple : Les données de cet exemple (fichier PAYS), avec lequel nous travaillerons également en TP, proviennent d un article de Russet (1964). Russet cherche à montrer que l inégalité économique entraîne l instabilité politique. Pour mesure l inégalité économique, Russet utilise des variables décrivant la répartition des terres agricoles, le produit national brut par tête et le pourcentage de personnes actives travaillant dans l agriculture : la variable GINI représente l indice de concentration de Gini qui mesure l écart entre la courbe de Lorenz et la droite d égalité, la variable FARM correspond au pourcentage de fermiers possédant la moitié des terres, en commençant par les plus petites surfaces. Si FARM vaut 90%, alors la moitié des terres est possédée par 10% des fermiers, la variable RENT mesure le pourcentage de fermiers locataires de leurs terres, la variable GNPR (gross national product per capita) est la produit national brut par tête en dollars U.S. en 1955, la variable LABO est égale au pourcentage de personnes actives travaillant dans l agriculture. Il y a quatre mesures de l instabilité politique : la variable INST est une fonction du nombre de responsables du pouvoir exécutif et du nombre d années pendant lesquelles le pays a été indépendant entre 1945 et Cet indice varie entre 0 (très stable) et 17 (très instable), la variable ECKS est l indice d Eckstein calculé sur la période Il mesure le nombre de conflits violents entre communautés sur cette période, la variable DEAT est le nombre de personnes tuées lors de manifestations violentes sur la période , la variable DEMO classe les pays en trois groupes : démocratie stable (1), démocratie instable (2) et dictature (3). Les données d origine sont reproduites dans le tableau suivant : 13
14 Obs Pays gini farm rent gnpr labo inst ecks deat demo 1 Argentine Australie Autriche Belgique Bolivie Brésil Canada Chili Colombie Costa Rica Cuba Danemark Rép. Dominic Equateur Egypte Espagne Etats-Unis Finlande France Guatemala Grèce Honduras Inde Irak Irlande Italie Japon Libye Luxembourg Nicaragua Norvège Nlle Zélande Panama Pays-Bas Pérou Philippines Pologne RFA Royaume-Uni Salvador Sud Vietnam Suède Suisse Taiwan Uruguay Venezuela Yougoslavie On peut stocker les tables de façon permanente ou temporaire. La table temporaire est détruite à la fin de la session SAS en cours Les librairies, les tables permanentes et temporaires Une table temporaire sera représentée par un simple nom_de_table. Une table permanente se présentera de la manière suivante : nom_de_librairie.nom_de_table où nom_de_librairie représentera la librairie (c est à dire le répertoire) où la table est stockée. La librairie est définie lors d une instruction LIBNAME assurant la correspondance entre le nom_de_librairie et le nom physique («réel») de la librairie. 14
15 Ainsi, là où d autres logiciels comme Excel se contentent de demander à l utilisateur où aller chercher les données, SAS demande de lui définir au préalable le ou les emplacements où aller lire et écrire des données avec le système des bibliothèques (ou librairies). Une fois définie, la librairie n est allouée que pour la durée de la session. Il est préférable d utiliser cette instruction en tête de programme, de manière à la retrouver facilement. Exemple : On tape l instruction suivante dans la fenêtre Editeur : libname pays 'c:\cours SAS'; Le message suivant s inscrit dans la fenêtre Journal : NOTE: Libref PAYS attribué comme suit : Moteur : V8 Nom physique : c:\cours SAS 48 libname pays 'c:\cours SAS'; Le nom d une librairie doit satisfaire à plusieurs contraintes : ne pas reprendre le nom d une bibliothèque allouée automatiquement par SAS (WORK, SASUSER, SASHELP et MAPS), ne pas dépasser 8 caractères ; ne doit comporter que des lettres non accentuées, des chiffres (mais pas en 1 ère position dans le nom) et le signe _ (underscore ou blanc souligné). On peut visualiser le contenu d une bibliothèque à l aide de la fenêtre Explorer. Nous y reviendrons en séance de TP. Quelques informations complémentaires sur les librairies prédéfinies de SAS : WORK est une bibliothèque temporaire. Son contenu est effacé à la fin de la session SAS. Pour définir une table SAS temporaire, on peut ainsi écrire nom_de_table ou work.nom_de_table. SASHELP héberge des données fournies par SAS à des fins d exercices (comme CLASS, AIR, SHOES, etc ). SASUSER est une bibliothèque personnelle (chaque utilisateur a sa propre SASUSER) permanente (au contraire de WORK). Son contenu n est donc pas effacé à la fermeture de SAS. Cette bibliothèque contient entre autres les informations de personnalisation de la session SAS (barres d outils par exemple). Il est possible d y écrire ses données, même si, en général, il est préférable d allouer une bibliothèque séparée pour le stockage des données. MAPS contient les fonds de cartes fournis par SAS, dont une carte départementale de la France. 15
16 4. 2. L import et l export des données Création d une table SAS à partir d un fichier texte externe Un fichier externe est copié en une table SAS au cours d une étape DATA, à partir des instructions INFILE et INPUT : Syntaxe : DATA nom_de_table ; INFILE fichier_en_entrée ; INPUT format_de_lecture ; RUN ; L instruction DATA permet de nommer la table SAS à créer. L instruction INFILE indique le nom ou la référence du fichier à lire en entrée. L instruction INPUT précise comment lire les données : en quelle position figure chaque variable, son type (caractère ou numérique), sa longueur, le nom à lui donner et le format de lecture (informat) des informations à importer. Instruction INFILE Principales options de l instruction INFILE : FIRSTOBS=numéro_d observation Numéro de la première observation du fichier en entrée à prendre en compte pour le déroulement de l étape DATA. Cette instruction est utile lorsque la première ligne comporte les noms des variables (surtout si les variables excèdent 8 caractères). Exemple : INFILE c:\fichier.txt FIRSTOBS=2 ; OBS=numéro_d observation Numéro de la dernière observation du fichier en entrée à prendre en compte pour le déroulement de l étape DATA. MISSOVER En cas d enregistrements de longueur variable, si toutes les variables de l ordre INPUT n ont pas été lues, les variables non renseignées sont mises à valeur manquante. En l absence de cette option, SAS lit les valeurs restantes au début de l enregistrement suivant. DLM= Caractère séparateur (espace par défaut). La tabulation est notée 09 x On peut avoir à lire un fichier de données brutes délimitées (sans passer par le menu Import Data de SAS). Un des intérêts de ce type de fichier réside dans le fait que les données ne doivent pas obligatoirement être organisées en colonnes fixes. Les délimiteurs les plus fréquents sont les blancs, les virgules, et les tabulations. Après l instruction INFILE, on précise l option DLM= caractères. Ainsi, si par exemple des virgules servent de délimiteurs, l instruction infile sera la suivante : infile 'c:\cours SAS\myfile.txt' dlm=, ; En fin de compte, si aucun délimiteur n est spécifié avec l option DLM=, le délimiteur par défaut est un blanc. On peut spécifier plus d un délimiteur dans l option DLM=. Dans ce cas, n importe quel de ces caractères et non une combinaison de ceux-ci, agit 16
17 comme délimiteur. Par exemple, dlm=, - indique que la virgule et le tiret peuvent tous deux servir de délimiteur. DSD Indique que si deux séparateurs sont consécutifs, ils correspondent à une valeur manquante. LRECL= Nombre maximum de caractères par ligne de données (par défaut, 256) Exemple : INFILE c:\fichier.txt LRECL=500 ; Exemple : data pays.russet; infile 'c:\cours SAS\Pays.txt' firstobs=2 obs=4; Seules les lignes 2, 3 et 4 sont recopiées dans la tables SAS pays.russet : Obs Pays Gini Farm Rent Gnpr Labo Inst Ecks Deat Demo 1 Australie Autriche Belgique Instruction INPUT Dans l instruction INPUT, la liste des variables lues doit respecter l ordre dans lequel les champs sont présents dans le fichier importé. Pour jouer sur cet ordre dans la table SAS créée, on utilisera les déclarations d attributs (instruction ATTRIB) dans l ordre voulu. Il faudra distinguer les variables numériques et caractères, en faisant précéder les variables caractères par un signe $. Si on précise &, la variable à lire peut contenir un espace : la variable sera lue jusqu à ce que soient rencontrés deux espaces consécutifs. Au fur et à mesure de l exécution de l instruction INPUT, un élément virtuel, appelé pointeur de colonne est positionné afin de lire la variable suivante. Ce pointeur de colonne peut être déplacé, avancé, positionné à la ligne suivante : déplace le pointeur à la colonne n de l enregistrement en cours. INPUT +n déplace le pointeur de n colonnes vers la droite, INPUT / déplace le pointeur de colonne à la ligne suivante. On peut aussi préciser la colonne de début et la colonne de fin d une variable. L instruction est alors la suivante : INPUT nom_de_variable <$> <colonne_de_début> <colonne_de_fin> ; Si la variable n occupe qu une colonne, la colonne de fin peut être omise. Avantages : les valeurs caractères peuvent contenir des espaces, les valeurs manquantes ne posent pas de problèmes. Un champ à blanc est considéré comme valeur manquante, les champs peuvent être lus dans n importe quel ordre. Les différentes variables sont séparées par des espaces. 17
18 Exemple : Dans la fenêtre Editeur de SAS, on tape les instructions suivantes : data pays.russet; infile 'c:\cours SAS\Pays.txt'; input Pays $ 1-13 Gini Farm Rent Gnpr Labo Inst Ecks Deat Demo 52; Informat On peut également devoir importer des données non standards. Le terme données standard se rapporte aux données de type numérique et caractère qui n ont pas de qualités de données inhabituelles. Le terme données non standard se rapporte plutôt aux données de type caractère ou numérique inhabituelles. Exemple de données non standard : dates (12/12/2012, 29FEB2000) chiffres avec des milliers repérés par des virgules (4,242, $89,000). Par défaut, on ne peut lire que les données standard de type caractère ou numérique si on utilise l entrée sous forme de liste. A la suite de chaque variable, les instructions permettent à SAS de lire correctement les valeurs : pour une variable numérique stockée avec une virgule comme séparateur décimal, faire suivre le nom de la variable de l informat : NUMX. ; pour une variable date, faire suivre le nom de l informat adéquat ( :DDMMYY. Ou YYMMDD.) ; pour une variable caractère, faire suivre le nom de : $x., où x est le nombre de caractères (blancs compris) de la plus longue valeur lue. Informats les plus courants Type de Type de Exemple Informat données lues données créées Données lues Informat utilisé Données créées x. Entiers Numériques x.d Nombres décimaux (séparateur Numériques point) NUMXx.d Nombres décimaux (séparateur Numériques 123,45 NUMX virgule) $x. Texte Caractère ABC DEF $7. ABC DEF $UPCASEx. Texte Caractère (texte en Abc def $UPCASE5. ABC D majuscules) DDMMYYx. Date Numérique 25/01/2001 DDMMYY YYMMDDx. ANYDTDTEx. (jj/mm/aaaa) Date (aaaa/mm/jj) Date (tous formats) (date) Numérique (date) Numérique (date) YYMMDD /25/ ANYDTDTE
19 Exemple : on importe un fichier texte avec des dates : On utilise le programme suivant : data date; infile 'd:\sas\cours SAS\date.txt' firstobs=2; input date:anydtdte10.; On obtient le fichier suivant : Obs date Les deux points (:) qui précèdent l informat assouplissent son comportement. Par exemple, si on donne un informat $10. à une variable, 10 caractères seront lus, même si un séparateur en fait partie. Dans la lecture d un fichier à séparateur, ce comportement est préjudiciable. L informat :$10. permet de lire au maximum 10 caractères et s arrête au séparateur. Exercice 1 : on a un fichier de données brutes, séparées par des virgules, avec les variables vol (identificateur du vol), cargo (capacité totale de l avion), date (dernière date d utilisation de l avion), nb_passagers (nombre total de passagers). Voici les deux premières lignes d enregistrement des données : I001,213,09/12/2001,110 I002,89,09/12/2001,45 3 champs correspondent à des données standards (vol, cargo et nb_passagers), un champ contient des données non standards (date). Ecrire une étape data permettant de lire ces données et de créer la table temporaire avions. Attributs des variables Toutes les variables présentent un certain nombre de caractéristiques nom, label, type, format, informat et longueur -. L instruction ATTRIB a pour but de centraliser ces caractéristiques. ATTRIB nomvariable LABEL='mon label' FORMAT=fmt. LENGTH=longueur ; Le label est un texte libre de 256 caractères maximum, Le format est choisi parmi ceux présentés en annexe 1 ou parmi des formats créés par l utilisateur, La longueur est le nombre d octets affectés au stockage de chaque valeur. Pour une variable de type numérique, cette information peut généralement être laissée à la gestion de SAS. Pour une variable de type caractère, on donnera après un $ la longueur maximale que peuvent atteindre les valeurs. 19
20 Exemples d ATTRIB à insérer dans une étape Data : ATTRIB codepostal LABEL='code postal de résidence du client' FORMAT=$5. LENGTH=$ 5 ; ATTRIB dfineff LABEL='date de fin d"effet du contrat' FORMAT=DDMMYY10. ; Longueur Lorsque vous utilisez des entrées sous forme de listes, la longueur par défaut d une variable est de 8, aussi bien pour les données de type caractère que numérique. Pour modifier la longueur d une donnée de type caractère. Pour modifier la longueur d une donnée de type caractère, on peut définir la longueur avec une instruction LENGTH ou ATTRIB. Exemple : On a le fichier texte suivant (voitures.txt, dans le répertoire c:\cours SAS) : nom cylindree puissance longueur largeur poids vitesse origine finition prix ALFASUD-TI I B AUDI-100-L D TB SIMCA-1307-GLS F M CITROEN-GS-CLUB F M FIAT GLS I B LANCIA-BETA I TB PEUGEOT F B RENAULT-16-TL F B RENAULT-30-TS F TB TOYOTA-COROLLA J M ALFETTA I TB PRINCESS-1800-HL GB B DATSUN-200L J TB TAUNUS-2000-GL D B RANCHO F TB MAZDA J M OPEL-REKORD-L D B LADA U M On importe sous SAS ces données et on crée la table SAS temporaire voitures : data voitures; infile 'd:\courssas\voitures.txt' firstobs=2; length nom $ 16; input nom $ cylindree puissance longueur largeur poids vitesse origine $ finition $ prix; Remarque : on a précisé la longueur de la variable nom, sinon la longueur était tronquée à 8 caractères (alors que certains noms de voiture comportent 16 caractères). L instruction length doit précéder l instruction input. 20
21 Exercice 2 : On veut lire le fichiers de données brutes employes.csv, stocké dans le répertoire c:\cours SAS, et contenant les variables suivantes : 1/ la division de l employé : DIV 2/ la date d entrée en service de l employé : DESE 3/ le salaire de l employé : SE 4/ le nom de famille de l employé : NFE 5/ le prénom de l employé : PE 6/ le pays de l employé : PAYS 7/ la localisation de l employé : LE 8/ le numéro d identification de l employé : NIE 9/ le code d emploi : CODE Les premiers enregistrements de données se lisent comme suit : FLIGHT OPTS,03/11/1992,25000,MILLS,DOROTHY E,USA,CARY,E0001,FLTAT3 FINANCE,12/19/1983,27000,BOWER,EILEEN A,USA,CARY,E0002,FINCLK Questions : quel délimiteur sera utilisé? quels champs sont lus sous forme de caractères? quelle est la longueur de chacun des champs de type caractère? Y a-t-il des champs qui contiennent des données non standard? Dans l affirmative, de quels champs s agit-il? Pour chaque champ identifié comme non standard, quel type d informat le champ requiert-il? Ecrire une étape DATA pour créer une table EMPLOYES qui contient toutes les variables du fichier d entrée. NB : il faut spécifier par une instruction length la longueur de toutes les données qui dépassent 8 caractères. Exercice 3 : Importez sous SAS le fichier c:\temp\clients_sep.csv PRENOM ;NOM ;DAT_NAI ;VILLE ;DEPT ;NB_ACHATS ;ANNEES_ANCIENNETE Anne Sophie ;Martineau ;14/08/1955 ;PARIS ;75 ;8 ;0,3 Marie-Anne ;Dupont ;01/12/1977 ;ORLEANS ; Roger ;Martin du Gard ;18/01/1988 ; ;29 ;17 ;1,8 ; Exercice 4 : Importez sous SAS le fichier c:\temp\clients_col.txt NOM PRENOM DAT_NAI VILLE DEPT NB_ACHATS AN_ANCIEN Martineau Anne Sophie 14/08/1955 PARIS ,3 Dupont Marie-Anne 01/12/1977 ORLEANS Martin du Gard Roger 18/01/ ,8 On utilisera un arrobas (@) suivi d un nombre pour indiquer la colonne à laquelle commencent les valeurs du champ. Par ailleurs, on souhaite que le prénom figure en 1 ère colonne dans la table SAS créée. 21
22 Format On peut également préciser le format des données avec l instruction format. Les formats SAS ont la forme suivante : <$> <w>.<d> $ réservé aux variables caractères. Si on omet $, la variable est numérique. w longueur de la variable. Si w=7, la variable prend 7 colonnes.. nombre de décimales. Si d=1, on a 1 chiffre après la virgule. Il n est pas nécessaire que l instruction format précède l instruction input. Exemple : Dans le précédent exemple, on rajoute l instruction suivante pour que le prix soit codé avec deux décimales : data voitures; infile 'd:\courssas\voitures.txt'; input nom $ cylindree puissance longueur largeur poids vitesse origine $ finition $ prix; length nom $ 16; format prix 8.2; L instruction format aurait pu précéder l instruction input. Dans le fichier d origine, le prix était codé sur 5 colonnes. On ajoute deux chiffres après la virgule, et une colonne pour la virgule, soit un total de 8 colonnes. Lecture conditionnelle de données On se place maintenant dans le cas où : on souhaite lire seulement une partie de l enregistrement, tester une valeur de données, continuer la lecture de l enregistrement si les données testées respectent certains critères. Exemple : On reprend le fichier avion (cf. Exercice 1). Lorsque la capacité maximale de l avion est inférieure à 100, on ne veut lire que les deux premières variables (vol et cargo). On lira également les variables date et nb_passagers uniquement lorsque la capacité maximale de l avion est supérieure à 100. data avion; infile 'c:\:\cours SAS\myfile.txt' dlm=','; length vol $ 4; input vol : $4. cargo : if cargo gt 100 then input data : mmddyy10. nb_passagers : 3.; Si on n utilise SAS passe directement à la deuxième ligne d enregistrement lorsqu il rencontre le 2 ème input. On utilise donc l indicateur de pour garder : la ligne de données courante dans le tampon d entrée pour le traitement d une autre instruction INPUT, le pointeur de colonne à son emplacement actuel dans la ligne de données. 22
23 Exercice 5 : On dispose d un fichier aircraft.csv délimité par des virgules, décrivant les avions dont dispose une compagnie aérienne, et avec les variables suivantes : identificateur de l avion : ID (variable caractère de longueur 6), modèle de l avion : MODEL (variable caractère de longueur 20), date de mise en service : IN_SERVICE_DATE (date de format MM/JJ/AAAA, par exemple 12/31/1999), date de dernière utilisation : LAST_SERVICE_DATE (date de format MM/JJ/AAAA), capacité en première classe : CAPACITY_FIRSTCLASS capacité en classe affaire : CAPACITY_BUSINESS capacité en classe économique : CAPACITY_ECONOMY Pour les avions entrés en service après le 1 er janvier 1990, on ne veut que les variables ID, MODEL et IN_SERVICE_DATE. On veut toutes les variables pour les avions entrés en service avant le 1 er janvier Ecrivez une étape DATA pour récupérer ces données La procédure Import La procédure IMPORT correspond au programme le plus souvent rédigé par l assistant d importation. Elle permet de traiter toute une gamme d imports courants, dans les fichiers de formats réglementés : feuille Excel, tables Access, fichiers à séparateurs virgules, point-virgule ou tabulation. Pour l import de certains types de fichiers, des classeurs Excel par exemple, la procédure IMPORT nécessite d avoir une licence pour le module SAS/ACCESS TO PC FILES. Syntaxe : PROC IMPORT DATAFILE= chemin et nom du fichier importé OUT=tableSAScréée DBCS=typeFichierLu REPLACE ; <instructions optionnelles> RUN ; La table SAS créée est désignée par sa librairie et son nom. Le fichier importé est donné sous forme de chemin complet, avec le nom du fichier et son extension. L option REPLACE permet à SAS d écraser une table SAS existante par la version importée. En son absence, SAS renvoie un message d erreur si l on essaye de créer une table qui existe déjà. Les valeurs les plus courantes de l option DBCS sont répertoriées dans le tableau suivant. 23
24 Principales valeurs possibles pour le type de fichier lu Mot-clé Type de fichier Nécessité ACCESS TO PC FILES DLM Fichier à caractère délimiteur (blanc par défaut) Non CSV Fichier à séparateur virgule Non TAB Fichier à séparateur tabulation Non EXCEL2002 Classeur excel 2002 Oui EXCEL2000 Classeur excel 2000 Oui EXCEL97 Classeur excel 97 Oui EXCEL5 Classeur excel 5 Oui EXCEL4 Classeur excel 4 Oui ACCESS2002 Table Access 2002 Oui ACCESS2000 Table Access 2000 Oui ACCESS97 Table Access 97 Oui WK1 Classeur Lotus version 2 Oui DBF Fichier Dbase Oui Les instructions optionnelles dépendent beaucoup du type de fichier lu. On retiendra en particulier GETNAMES=YES ou NO ; qui permet de lire en première ligne du fichier les noms des variables à importer. Sans cette option, les variables créées seront nommées F1, F2, F3 etc. SHEET= nomfeuilleexcel$ est utile pour l import d un classeur excel. Par défaut, la première feuille est importée. La procédure IMPORT ne propose pas de moyen automatique simple pour importer dans autant de tables toutes les feuilles d un classeur Excel. Enfin, DELIMITER= caractère permet de spécifier le caractère séparateur pour DBCS=DLM. Exemple : Pour importer la feuille Ventes2003 du classeur TableaudeBord.xls, situé dans le répertoire c:\perso\tdb, on utilisera la programme suivant : PROC IMPORT DATAFILE= c:\perso\tdb\tableaudebord.xls OUT=base.ventes03 REPLACE DCBS=EXCEL2002 ; GETNAMES=YES ; SHEET= Ventes2003 ; RUN ; Ces deux dernières méthodes sont plus simples que l utilisation de l étape Data pour importer des fichiers. Mais l intérêt de l importation par l étape Data est de permettre d importer exactement les données de la manière voulue (par exemple, sans erreur sur le type de variable : un numéro de département défini sous Excel sera importé comme variable numérique par la PROC IMPORT). L étape Data permet également de ne pas commencer la lecture des données avant la nième ligne, et de donner aux variables créées toutes les caractéristiques voulues (nom, label, format) avec une instruction ATTRIB Utilisation de l assistant d importation En TP, on utilisera également l assistant d importation (menu Fichier > Importer des données) pour créer une table SAS à partir d un fichier externe. Le choix des types de fichiers importés est plus ou moins riche selon que le module SAS/ACCESS TO PC FILES est sous licence ou non. Dans le cas où ce module n est pas sous licence, la liste se réduit à : 24
25 fichier à séparateur dans le cas général (*.*) ; fichier à séparateur virgule (*.csv) ; fichier à séparateur tabulation (*.txt). Sinon, la liste s enrichit de formats de fichiers tels qu Excel, dbase, Access ou Lotus Saisie des données sous SAS Si les données sont saisies sous SAS, elles doivent : suivre directement l étape DATA, être précédées du mot clé CARDS, être suivies d un caractère ; placé en début de ligne. Exemple : Dans la fenêtre Editeur de SAS, on saisit des données relatives aux caractéristiques physiques d un parc national. Il s agira, au cours du TP, d étudier la relation entre la présence d herbivores et l environnement dans le parc. Dans la table SAS suivante, on trouve les caractéristiques des 10 zones étudiées. la variable ZONE identifie la zone étudiée, la variable HERB correspond au niveau de l herbe, la variable BOSQUET indique la présence de bosquets, la variable EAU renseigne sur la proximité de l eau, la variable HIPPO renseigne sur l existence d un programme de contrôle du nombre des hippopotames du site. Dans la fenêtre Editeur de SAS, on tape les instructions suivantes : data parc; input ZONE HERB $ BOSQUET $ EAU $ HIPPO $; cards; 1 courte oui proche moyen 2 haute oui éloignée aucun 3 courte oui proche aucun 4 courte oui proche important 5 courte oui moyenne aucun 6 courte oui proche aucun 7 courte non éloignée aucun 8 courte oui moyenne important 9 courte non éloignée aucun 10 courte non éloignée aucun ; L export de tables SAS L export peut se faire à travers trois types de manipulations : avec l assistant d export (disponible dans le menu FILE>EXPORT), identique dans son principe et son ergonomie à l assistant d import. Nous aborderons cette possibilité en TP. avec la procédure EXPORT qui est le pendant de la procédure IMPORT. Avec une étape Data et deux instructions FILE et PUT qui sont le pendant des instructions INFILE et INPUT vues précédemment. 25
26 Création d un fichier texte à partir d une table SAS Lorsque l on copie une table SAS dans un fichier texte, aucune table n est créée au cours de l étape DATA. Puisque la sortie attendue est un fichier externe et non table SAS, il est inutile d indiquer un nom de série de données dans l instruction DATA. On emploie alors une instruction DATA _NULL_; Pour créer un fichier texte à partir d une table SAS, il faut : assigner un fichier de sortie par une instruction FILENAME, créer une étape DATA _NULL_ (puisque l objectif n est pas de construire une table SAS, mais de se servir d éléments existants, afin de les présenter dans un fichier externe), utiliser les possibilités de la fonction PUT, notamment en matière de formatage des variables. Chaque observation soumise à une instruction PUT sera ainsi copiée dans le fichier texte identifié par l instruction FILE. La syntaxe de l instruction FILE est la suivante : ou FILE nom_de_fichier ; FILE nom_logique ; où le nom logique représente un fichier précédemment défini par une instruction FILENAME. Options de l instruction FILE Pour créer un fichier dont les champs sont séparés par un délimiteur, on utilise l option DLM= dans l instruction FILE. Syntaxe : DATA _NULL_ ; SET nom_de_table ; FILE nom_de_fichier DLM= délimiteur ; Option DSD Supposons qu on exporte le fichier comportant des données sur les salaires, où les milliers sont séparés par une virgule. Par exemple, une ligne de données serait la suivante : IA00100,04JUL2001,124, 000 Certains logiciels liront ces données comme quatre champs et non trois. Pour indiquer que les valeurs de données contenant des virgules doivent être présentées entre guillemets, on utilise l option DSD dans l instruction FILE. data _null_; set table_sas; file 'c:\cours SAS\myfile' dlm=',' dsd; put flight data : date9. revenue : comma7.; run ; On obtiendra le résultat suivant : IA00100,04JUL2001, 124,
27 Quand le pointeur d écriture dépasse la largeur de page : Par défaut, la largeur de page est définie par l option générale LINESIZE=. Si une spécification est envoyée au pointeur d écriture pour écrire au delà de cette limite, le système cherchera à écrire la valeur correspondante au début de la ligne suivante. Ce peut être le cas d une variable dont la longueur dépasse le nombre de caractères séparant la position courante de la fin de la ligne. Cependant, ce mécanisme peut être géré par une option de l instruction FILE : DROPOVER : la variable correspondante n est pas écrite STOPOVER : l étape DATA est arrêtée, et un message d erreur envoyé dans le fichier LOG FLOWOVER : la variable est écrite au début de la ligne suivante (défaut). Pour contrôler la taille d une page (en nombre de lignes) : Syntaxe : FILE nom_logique PAGESIZE=nombre_de_lignes ; Utilisation de l instruction PUT L instruction PUT s utilise avec la même logique que l instruction INPUT. Cependant, au lieu de lire les données, elle permettra d écrire les données en utilisant un FORMAT d écriture. Ce format pourra aussi bien être un format SAS prédéfini qu un format utilisateur préalablement défini par une PROC FORMAT, ou lu dans une librairie de formats utilisateur. La valeur exportée sera lors la valeur formatée, au lieu du comportement par défaut de SAS qui exporte la valeur stockée. Par rapport à INPUT, il n est pas nécessaire de signaler le type des variables caractère par un $. En effet, lors de l export, le type des variables SAS est déjà connu. La syntaxe de l instruction PUT est la suivante : PUT <contrôle du pointeur d écriture> <nom_de_variable1> <format_d écriture> <contrôle du pointeur d écriture> <nom_de_variablen> <format_d écriture> Il est possible de : se déplacer de n colonnes par rapport à la position actuelle : Opérateur + Exemple : PUT +n var1 2. ; se déplacer au début de la ligne suivante : Opérateur / Exemple : PUT / var 1 2. ; se déplacer à une colonne en position absolue sur la ligne courante : Exemple : var1 2. ; écrire une variable à un emplacement déterminé en indiquant la colonne de début et la colonne de fin. On ne peut pas dans ce cas indiquer de format d écriture : Exemple : PUT var1 5-7 ; Exemple : filename russet 'c:\cours SAS\Russet.txt'; data _NULL_; set pays.russet; file russet; put Demo; ou de façon équivalente : 27
28 data _NULL_; set pays.russet; file 'c:\cours SAS\Russet.txt'; put pays Demo; Le nom de la variable peut être suivi d un format ; la valeur exportée sera alors la valeur formatée, au lieu du comportement par défaut de SAS qui exporte la valeur stockée. Exemple : PUT date DDMMYY10. ; Exercice 6 : On dispose d une table SAS qui décrit 27 chiens selon des variables de taille, poids, vélocité, intelligence, affection, agressivité et fonction (1 : compagnie, 2 : chasse, 3 : garde). Exportez ces données dans un fichier texte chien.txt, dans le répertoire c:/cours SAS. La variable nom sera codée sur les colonnes 1 à 23, la variable taille sera codée à partir de la colonne 24 (de sorte que dans le fichier texte, toutes les variables seront alignées) La procédure EXPORT Cette procédure reprend le principe et la syntaxe de la procédure IMPORT déjà citée. Comme pour celle-ci, l export de certains types de fichiers comme les classeurs Excel nécessite d avoir une licence pour le module SAS/ACCESS correspondant. Si aucun module SAS/ACCESS n est disponible, alors la procédure EXPORT ne saura produire que des fichiers textes. Syntaxe : PROC EXPORT DATA=tableSASlue OUTFILE= chemin et nom du fichier exporté DCBS=typeFichierCréé DELIMITER=délimiteur ; <SHEET<nomFeuilleExcel ;> RUN ; 28
29 La table SAS lue est désignée par sa bibliothèque et par son nom. Le fichier exporté est donné sous forme de chemin complet, avec le nom du fichier et son extension. Par exemple c:\mes documents\données\import\ca_1999.txt. L instruction SHEET optionnelle permet de préciser, dans le cas d un export vers un classeur Excel (avec l option DBCS=EXCEL) quelle est la feuille Excel du classeur dans laquelle la table SAS est exportée Manipulation des données au sein de l étape DATA Epuration de données existantes On peut utilement modifier les données à l aide des fonctions : UPCASE : convertit toutes les lettres d une valeur donnée en majuscules. COMPBL : comprime plusieurs blancs consécutifs apparaissant dans une valeur de données en un seul blanc. TRANWRD : remplace dans une valeur de données toutes les occurrences d une modèle de caractères par un autre modèle de caractères. Attention : si on crée une nouvelle variable à l aide de la fonction TRANWRD, la longueur de cette nouvelle variable est 200 (sauf si on utilise l instruction LENGTH). Exemple : un chasseur de tête d une compagnie aérienne dispose d une table SAS applicants sur les candidats. Les premières lignes sont les suivantes : Applicant Last Name Applicant First name Applicant country Job Code CHASE JR MARJORIE J. USA FLTAT1 RIGHENZI NICOLAS France MECH01 DE PABLOS MARIA Spain FINCLK. Afin de retrouver plus facilement les candidats dans la base de données on va procéder aux transformations suivantes : on place un point après JR, on écrit en majuscules le pays, on élimine les blancs inutiles dans le nom de famille. data applicants ; set applicants ; lastname=tranwrd(lastname, JR, JR. ); country=upcase(country) ; lastname=compbl(lastname); Création de nouvelles variables La gestion des attributs est la première chose à faire lors de la création de nouvelles variables. On peut utiliser les instructions ATTRIB et LENGTH vue précédemment. Vient ensuite la nécessité de définir la formule qui va permettre le calcul des valeurs de cette nouvelle variable. Lors de la création de variables, un certain nombre de formules et de fonctions peuvent être utilisées. Ces fonctions peuvent être arithmétiques, statistiques, mathématiques ou effectuer des transformations sur des variables caractères. Les formules simples et les fonctions La seconde étape consiste à faire le lien entre le nom d une variable et le mode de calcul de ses valeurs (formule). Cette formule est constituée : de constantes (nombres, texte, dates) citées entre guillemets pour le texte, entre guillemets et avec un d pour les dates; 29
30 de noms de variables existantes ; de fonctions SAS et d opérations. Création de nouvelles variables de type caractère avec les fonctions SUBSTR, TRIM, SCAN et l opérateur de concaténation La fonction SUBSTR extrait une partie d une valeur de données de type caractères d après le nombre de caractères indiqués. Syntaxe var1=substr(var,début,nombre-de-car) Exemple : si la variable name= Dorothy, substr(name,1,3) extrait les 3 premiers caractères de la variable name et est égal à Dor. La fonction SCAN extrait une partie d une valeur de données de type caractère d après le numéro d ordre du mot à récupérer. Syntaxe var1=scan(var,numéro-de-mot<,délimiteur(s)>) Exemple : soit la variable name qui prend pour une observation la valeur Dorothy E. scan(name,2, ) extrait le deuxième nom, soit E. Si la variable créée n a pas été définie auparavant avec une instruction LENGTH, la longueur de la nouvelle variable est 200. S il n y a pas de troisième argument, les délimiteurs par défaut sont : ASCII (par exemple, UNIX) : blanc. < ( + & $ * ) ^ - /, % ~ EBCDIC (par exemple OS/390, CMS) : blanc. < ( + & $ * ) - /, % L opérateur de concaténation unit des valeurs de données de type caractère. Syntaxe var2=var var1 Si la variable créée n a pas été définie auparavant avec l instruction LENGTH, la longueur de la nouvelle variable est la somme des longueurs de toutes les variables et du texte constant concaténés. On peut aussi utiliser!! comme opérateur de concaténation. La fonction TRIM élimine les blancs à droite dans les valeurs de données de type caractère au cours de l exécution. Var2=TRIM(var) var1 La fonction TRIM par elle-même n a pas d effet visible sur un résultat. Par exemple, on n utilisera pas name1=trim(name). Exemple Une société a décidé de mettre en œuvre une nouvelle structure d adresse électronique sous la forme InitialeprénomInitialemé[email protected] La première initiale est suivie de l initiale médiane (s il y a lieu), du nom de famille et Données partielles emp_lastname MILLS BOWER READING JUDD emp_firstname DOROTHY E EILEEN A TONY R CAROL A 30
31 La première étape consiste à extraire la première lettre du prénom de l employé first_initial=substr(emp_firstname,1,1) ; On utilise ensuite la function substr pour extraire l initiale médiane middle_initial=substr(scan(emp_firstname,2, ),1,1) ; Enfin, on utilise l opérateur de concatenation et la fonction TRIM pour créer la variable =first_initial middle_initial Principales fonctions sur les variables de type caractère Fonction Description Exemples NUMSECU=NUM_INSEE!!CLE VarCar1!!varCar2 Concaténation de deux Si NUMSECU= chaînes de caractères et CLE=33, alors NUMSECU= SUBSTR(varCar,début, longueur) UPCASE(varCar) LOWCASE(varCar) LEFT(varCar) TRIM(varCar) STRIP(varCar) COMPRESS(varCar) COMPBL(varCar) Extraction d un morceau d une chaîne de caractères Mise en majuscule d une chaîne de caractères Mise en minuscules d une chaîne de caractères Suppression des blancs à gauche d une chaîne de caractères Suppression des blancs à droite d une chaîne de caractères Suppression des blancs à droite et à gauche d une chaîne de caractères Suppression des blancs dans une chaîne de caractères Suppression des blancs consécutifs dans une chaîne de caractères SEXE=SUBSTR(NUMSECU,1,1) _ 2 UPCASE(VILLE)_ PARIS CEDEX 03 LOWCASE(VILLE)_ paris cedex 03 LEFT(VILLE)_ Paris CEDEX 03 TRIM(VILLE)_ Paris CEDEX 03 STRIP(VILLE)_ Paris CEDEX 03 COMPRESS(VILLE)_ ParisCEDEX03 COMPBL(VILLE) _ Paris CEDEX 03 Création de nouvelles variables de type numérique à partir des fonctions INT, SUM, MEAN et ROUND Certaines fonctions telles que sum et mean permettent de calculer des statistiques sur plusieurs variables. Ces statistiques sont calculées sur chaque observation et sur les valeurs non manquantes des variables concernées. Elles permettent de synthétiser plusieurs variables numériques. La fonction SUM additionne des valeurs de variables, et ignore les valeurs manquantes. Elle renvoie toujours un résultat (zéro si toutes les valeurs concernées sont non renseignées), alors que l addition avec l opération + générera une valeur manquante si une des variables n est pas renseignée. Syntaxe var=sum(var1,var2,,varn) Exemple var1 var2 var3 var=sum(var1,var2,var3); var On peut aussi utiliser la liste implicite de variables, en utilisant le mot clé OF devant le premier nom de variable pour éviter la soustraction. Var=SUM(OF var1-varn) ; 31
32 Exemple : précédemment, on aurait pu utiliser l instruction suivante : var=sum(of var1-var3); La fonction MEAN retourne la moyenne arithmétique et ignore les valeurs manquantes. Elle ne prend en compte, comme dénominateur, que le nombre de variables renseignées pour cette observation. Syntaxe : var=mean(var1,var2,,varn) ; Exemple var1 var2 var3 var=mean(var1,var2,var3); var La fonction ROUND retourne une valeur arrondie à l unité la plus proche. Si l unité la plus proche n est pas désignée, la variable est arrondie au nombre entier le plus près. var=round(var1<,unité d arrondissement>) Tout nombre ou valeur fractionnaire peut être désigné comme unité d arrondissement. Exemples var1 var2 var3 var var1a=round(var1) ; var2a=round(var2) ; var3a=round(var3,.1); var4a=round(var4,.1); var1 var2 var3 var La function INT retourne la partie entière d un argument. var=int(var1) ; Exemple var1 var2 var3 var var1a=int(var1) ; var2a=int(var2) ; var3a=int(var3); var4a=int(var4); var1 var2 var3 var Exemple : on dispose pour chaque employé du montant des primes reçues au cours des 9 dernières années. Voici un aperçu des données partielles : EMP_ID Prime1 Prime2 Prime3 Prim4 Prim5 Prim6 Prim7 Prim8 Prim9 E E E E E On souhaite avoir un rapport affichant les ID des employés, le total des primes qu ils ont reçues au cours des neuf dernières années, ainsi que le montant moyen cumulé pendant la même période arrondi à l euro. 32
33 data sum_avg_prime; set prime; sum_prime=sum(of prime1-prime9); avg_bonus=round(mean(of bonus1-bonus9)); Sortie partielle EMP_ID Sum_prim e Avg_bonu s E E E E E Opérations sur les variables numériques (dates comprises) Opération Description + Addition - Soustraction * Multiplication / Division Ces opérations ne s effectuent pas quand une des variables concernées est manquante. Le résultat généré est alors une valeur manquante. Un message s affiche dans la fenêtre Log pour rendre compte de ce problème. ROUND(varNum, précision) ou ROUND(varNum RANUNI(0) Principales fonctions numériques Fonction Description Exemples ROUND(CA)_125 Arrondi à une précision ROUND(CA,0.1)_124.6 donnée ROUND(CA,10)_120 Génération d un nombre au hasard entre 0 et 1 (inclus) RANUNI(0)_ LOG(varNum) Logarithme naturel LOG(CA)_ EXP(varNum) Exponentielle EXP(CA/100)_ SQRT(varNum) Racine carrée SQRT(CA)_ ABS(varNum) Valeur absolue ABS(-1*CA)_ Principales fonctions statistiques de l étape Data Fonction SUM(varNum1, varnum2, varnum3 ) ou SUM(of varnum1-varnum3) MEAN(varNum1, varnum2, varnum3 ) ou MEAN(of varnum1-varnum3) MIN(varNum1, varnum2, varnum3 ) ou MIN(of varnum1-varnum3) MAX(varNum1, varnum2, varnum3 ) ou MAX(of varnum1-varnum3) MEDIAN(varNum1, varnum2, varnum3 ) ou MEDIAN(of varnum1-varnum3) Description Somme de plusieurs variables Moyenne de plusieurs variables Minimum de plusieurs variables Maximum de plusieurs variables Médiane de plusieurs variables Création de nouvelles variables de type numérique en fonction des dates La fonction INTNX avance une date, une heure ou une combinaison de date-heure par une valeur entière donnée, puis retourne une date, une heure ou une combinaison de date-heure. 33
34 Syntaxe Var=INTNX( intervalle,début,incrément) intervalle indique une variable ou une constante de type caractère. L argument intervalle peut apparaître en lettres minuscules ou majuscules. La fonction INTNX avance au début de l intervalle : par exemple 01JAN pour l intervalle YEAR. Le premier argument de la fonction INTNX doit être un de ceux qui sont énumérés dans ce tableau Intervalle de date Intervalle de date-heure Intervalle d heure DAY DTDAY HOUR WEEKDAY DTWEEKDAY MINUTE WEEK DTWEEK SECOND TENDAY DTTENDAY SEMIMONTH DTSEMIMONTH MONTH DTMONTH QTR DTQTR SEMIYEAR DTSEMIYEAR YEAR DTYEAR début incrément Exemple spécifie une expression SAS qui représente une valeur de date, d heure et de date-heure SAS et qui identifie un point de départ. spécifie un entier positif ou négatif qui représente le nombre spécifique d intervalles de temps. Supposons que la variable date_today soit égale au 05/11/2004. format date2 mmddyy10.; date2=intnx('year',date_today,1); date2 est alors égale à 01/01/2005. La fonction TODAY retourne la date courante sous la forme d une date SAS. Var=TODAY() La fonction DATE est synonyme de la fonction TODAY. Il y a d autres fonctions qui retournent des valeurs à partir de dates SAS : Var=YEAR(date_SAS) ; Var=MONTH(date_SAS) ; Var=DAY(date_SAS); Exemple : Présumons que nous soyons le 10 Novembre THISYEAR=YEAR(TODAY()) ; THISMONTH=MONTH(TODAY()) ; THISDAY=DAY(TODAY()); THISYEAR prend la valeur THISMONTH prend la valeur 11. THISDAY prend la valeur
35 Principales fonctions sur les dates Fonction Description Exemples TODAY() Date du jour TODAY()_16436 (31 décembre 2004) DAY(varDate) Jour extrait d une date DAY(16436)_31 MONTH(varDate) Mois extrait d une date MONTH(16436)_12 YEAR(varDate) Année extraite d une YEAR(16436)_2004 date WEEKDAY(varDate) Jour de la semaine WEEKDAY(16436)_6 extrait d une date 1=dimanche, 2=lundi, 3=mardi MDY(mois,jour,année) Construction d une date SAS à partir des éléments jour, mois et MDY(12,31,2004)_16436 INTCK( période,début,fin) INTNX( période,début, nbpériodes) année Nombre de débuts de période écoulés entre deux dates. La période est un mot-clé à choisir entre week, month et year. Les débuts de période sont le dimanche, le 1 er du mois, le 1 er janvier respectivement. Décalage d une date de n périodes dans le temps. La date en sortie de cette fonction est calquée sur le début de la période correspondante. Fonction de retard INTCK(' eek' 16436, 16512)_11 (11 dimanche entre les deux dates) INTNX( week,16436,11)_ (le résultat est forcément un dimanche est un jeudi, est un dimanche) Fonction Description Exemple LAG(var) Valeur lue à l observation var1=lag(_n_)_ précédente Obs var Les formules conditionnelles : IF THEN ELSE Les nouvelles variables peuvent prendre certaines valeurs conditionnellement à d autres variables. Le choix de la formule à utiliser se fera à travers une série d instructions IF THEN ELSE. IF condition THEN DO ; nouvellevariable=formule ; END ; ELSE DO ; nouvellevariable=formule ; END ; Exemple : IF x=1 THEN y=x+(2*z) ;ELSE y=3+x ; Opérateurs supportés par les IF et les WHERE 35
36 Opérateur Signification = Egalité NE (ou ^= ou!=) Différent de > Supérieur strictement à < Inférieur strictement à >= Supérieur ou égal à <= Inférieur ou égal à IN Prend une valeur dans un liste = : (sur les variables caractères uniquement) L'instruction ARRAY NOT AND OR Commence par une certaine chaîne de caractères Contraire d une condition Les deux conditions doivent être vérifiées par l observation Au moins une des deux conditions doit être vérifiée par l observation L'instruction ARRAY vectnom (n) listevar ; permet de définir des synonymes (vectnom) pour gérer des noms de variables (listevar) de manière rapide, notamment lorsqu'on doit manipuler des variables différentes en quantité. Cela sera très utile avec l'instruction DO pour traiter chaque élément de la même façon. Les variables peuvent être alphabétiques ; dans ce cas, on écrira ARRAY vectnom (n) $ listevar ; Par exemple, l instruction : ARRAY temp(12) x1-x12 ; indique que la variable TEMP est le vecteur synonyme des 12 valeurs x1 à x12. On peut donc les écrire indifféremment x1 ou temp(1) pour identifier la première variable, x2 ou temp(2) pour identifier la seconde, dans l étape DATA où cette instruction a été précisée. Exemple : on dispose d une table de corrélations entre 5 variables. On définit un indice de distance entre ces variables : distance(v1,v2)=1-corrélation(v1,v2). data distvar; set corvar; array dis(5) X1-X5; array cor(5) COR1 COR2 COR3 COR4 COR5; do i=1 to 5; dis(i)=1-cor(i); end; Sélection de certaines observations : instructions IF et WHERE IF condition THEN OUTPUT; ou IF condition; L instruction IF filtre les observations en ne prenant en compte l observation que si et seulement si la condition à vérifier est vraie. Cette condition peut contenir des expressions et opérateurs de comparaison : 36
37 < ou LT inférieur > ou GT supérieur =< ou LE inférieur ou égal => ou GE supérieur ou égal NE différent de. La condition peut être par exemple : une comparaison entre une variable et une valeur : IF age>30 une comparaison entre deux variables : IF date2>date1. L instruction IF peut aussi comprendre des opérateurs logiques : IF condition1 AND condition2 ; IF condition 1 OR (condition2 and condition3); Par exemple, on ne veut sélectionner que les démocraties (variable DEMO), dans lesquelles des manifestations violentes ont entraîné des morts sur la période (variable DEAT) : data demo; set pays.russet; if (demo=1 or demo=2) and deat>0; Si on veut éliminer certaines observations, on utilise l instruction DELETE : IF condition THEN DELETE ; Exemple : on veut créer deux fichiers, un fichier des démocraties et un fichier des dictatures : data demo dict; set d.russet; if demo in (1,2) then output demo; else output dict; drop demo; L instruction WHERE sélectionne les observations d une table SAS remplissant certaines conditions. Chaque condition met généralement en jeu une variable et une valeur. Enfin, des opérateurs sont nécessaires pour compléter la condition. La valeur est énoncée de manière différente selon le type de la variable testée caractère, numérique ou date - : pour une variable numérique, la valeur sera indiquée telle quelle, pour une variable de type caractère, la valeur apparaîtra entre guillemets. Une attention particulière sera accordée à la casse, une date sera explicitée de la manière suivante : deux chiffres pour le jour du mois, trois lettres pour le nom du mois en anglais et deux ou quatre chiffres pour l année. Cette description de la date est proposée entre guillemets (bien que la variable soit de type numérique), et un «d» est accolé au guillemet fermant. Par exemple, "16APR2003"d. Plusieurs clauses peuvent être testées simultanément en utilisant les opérateurs logiques OR et AND. 37
38 Exemple : data demo; set pays.russet; where (demo=1 or demo=2) and (deat>0); Opérateurs pour l option WHERE Opérateur Signification = Egalité NE Différent de (ou ^= ou!=) > Supérieur strictement à < Inférieur strictement à >= Supérieur ou égal à <= Inférieur ou égal à Prend une valeur dans un liste Ex. : dept IN ("22","29","35","56") IN ou dept IN ("22" "29" "35" "56") Egalité sur une partie de la valeur : dans la valeur testée, % remplace une chaîne inconnue, LIKE _ remplace un et un seul caractère inconnu (sur les variables caractère Ex. : prenom LIKE AN_E uniquement) _ ANNE, ANGE prenom LIKE %N% _ANNE, ANGE, NOEMIE, JULIEN = : (sur les variables caractères uniquement) BETWEEN IS MISSING NOT AND OR Commence par une certaine chaîne de caractères Ex. : num_securite_sociale= :"2" Compris entre deux bornes (incluses) N est pas renseigné Contraire d une condition Les deux conditions doivent être vérifiées par l observation Au moins une des deux conditions doit être vérifiée par l observation Sélection de certaines variables : instructions DROP, KEEP et RENAME Ces mots-clés peuvent être utilisés soit : comme option de l instruction DATA ou de l instruction SET, comme instruction à part entière. On peut ainsi dans la table SAS à créer : ne stocker qu une partie des variables utilisées dans l étape DATA : 3 syntaxes possibles : ou ou DATA nom_de_table(keep=liste_de_variables) ; DATA nom_de_table ; SET nom_de_table(keep=liste_de_variables) ; DATA nom_de_table ; SET nom_de_table ; KEEP liste_de_variables. 38
39 ne pas stocker des variables créées au cours de l étape DATA : 3 syntaxes possibles : ou ou DATA nom_de_table(drop=liste_de_variables) ; DATA nom_de_table ; SET nom_de_table(drop=liste_de_variables) ; DATA nom_de_table ; SET nom_de_table ; DROP liste_de_variables. Il est possible d utiliser certaines «abréviations» pour raccourcir l énumération d un grand nombre de variables : KEEP = dt : correspond à l ensemble des variables dont le nom commence par «DT», DROP = ca1997-ca2002 correspond à la séquence de variables dont le nom commence par «CA» et se termine par un nom compris entre 1997 et 2002 inclus, DROP = _NUMERIC_ correspond à l ensemble des variables numériques de la table, quel que soit leur nom. Il existe, à l identique, des mots-clés _ALL_ et _CHARACTER_ (toutes les variables de la table, ou seulement les variables de type caractère). renommer une ou plusieurs variables utilisées au cours de l étape DATA : 3 syntaxes possibles : ou ou Exemple : DATA nom_de_table(rename=(ancien_nom=nouveau_nom)) ; DATA nom_de_table ; SET nom_de_table(rename=(ancien_nom=nouveau_nom)) ; DATA nom_de_table ; SET nom_de_table ; RENAME ancien_nom1=nouveau_nom1..ancien_nomn=nouveau_nomn ; On souhaite créer un fichier voitures2 qui ne comporte que le nom de la voiture, et les variables cylindree puissance longueur largeur poids vitesse. La variable nom est renommée voiture. data voitures2(drop=origine finition prix rename=(nom=voiture)); set voitures; Création de plusieurs séries de données SAS Pour créer plusieurs séries de données, on nomme chaque série de données dans l instruction DATA. Les noms sont séparés par un espace. DATA nom_de_table1 nom_de_table2.nom_de_tablen ; On utilise également l instruction OUTPUT. Si l instruction OUTPUT ne contient aucun nom de série de données, l observation est écrite dans toutes les tables 39
40 énumérées à l instruction DATA. Mais on peut également décider des tables dans lesquelles sont écrites les observations en indiquant le nom des séries de données dans l instruction OUTPUT. OUTPUT nom_de_tablei ; On peut aussi indiquer plus d une table SAS dans une instruction OUTPUT en séparant les noms des séries de données par un espace, par exemple : OUTPUT nom_de_tablei nom_de_tablej ; Enfin, on va devoir utilise un traitement conditionnel. On a déjà vu le traitement conditionnel IF/THEN/ELSE. Un autre choix est possible, en utilisant l instruction SELECT, dont la syntaxe exacte est : SELECT <(expression-select)> ; WHEN (expression-when) instruction ; WHEN (expression-when) instruction; <OTHERWISE instruction;> END; Si plusieurs instructions doivent être exécutées lorsqu une expression est vraie, on encadre le groupe d instructions d un bloc DO/END. SELECT <(expression-select)> ; WHEN (expression-when) DO ; instructions; END; WHEN (expression-when) DO ; instructions; END; <OTHERWISE DO; instructions; END;> END; Exemple : On dispose du PIB de la France pour les années 1970 à On veut effectuer une prévision du PIB pour les années et D une année sur l autre, on prévoit une croissance de 2%. Le programme suivant permet de récupérer les prévisions pour les années 2004 à 2006 : 40
41 data PIB_prevision; set PIB_France; if annee=2003; drop annee; year=2004; PIB=PIB*1.02; output; year=2005; PIB=PIB*1.02; output; year=2006; PIB=PIB*1.02; output; Exemple : à partir du fichier russet, on veut créer plusieurs tables distinctes pour chaque continent. La syntaxe sera la suivante : data amerique_nord amerique_latine europe_est europe_ouest asie moyen_orient oceanie afrique; set russet; select(pays); when ('Argentine','Bolivie','Brésil','Chili','Colombie', 'Costa Rica','Cuba','Rép. Dominic.','Equateur', 'Guatemala','Honduras','Nicaragua','Panama', 'Salvador','Uruguay','Venezuela') output amerique_latine; when ('Canada','Etats-Unis') output amerique_nord; otherwise output europe_ouest; end; Pour générer les mêmes résultats que ceux de l étape DATA ci-dessus avec la logique IF/THEN, on utilise le code suivant : 41
42 data amerique_nord amerique_latine europe_est europe_ouest asie moyen_orient oceanie afrique; set russet; if pays in ('Argentine','Bolivie','Brésil','Chili', 'Colombie','Costa Rica','Cuba','Rép.Dominic.', 'Equateur','Guatemala','Honduras','Nicaragua', 'Panama','Salvador','Uruguay','Venezuela') then output amerique_latine; else if pays in ('Canada','Etats-Unis') then output amerique_nord; else output europe_ouest; Exercice 7 : le service de planification d une compagnie aérienne doit transmettre une série de données SAS au service de fabrication pour chacun des types d avions. Ecrivez une étape DATA de manière à créer une série de données SAS pour chaque type d avion : SMALL, MEDIUM et LARGE (variable MODEL). L information courante se trouve dans la table AIRCRAFT. Les modèles de type LARGE sont : LF5000, LF5100, LF5200, LF8000, LF8100. Les modèles de type MEDIUM sont : MF2000, MF2100, MF4000, MF4100, MF6000. Les autres modèles sont de type SMALL. Exercice 8 Un fichier de données brutes renferme des renseignements sur les employés retraités d une compagnie. Vous devez transformer et écrire les données dans une table SAS conformément aux directives énoncées ci-dessous. Le fichier à importer est le suivants : c:\cours SAS\retraites.csv. Le fichier de données brutes est délimité par la virgule et se présente comme suit : Champ 1 Champ 2 Champ 3 Champ 4 Champ 5 Champ 6 Champ 7 Champ 8 Fichier partiel : ID de l employé Date de naissance de l employé stocké sous la forme mm/jj/aaaa Nom complet de l employé (prénom et nom) (47 caractères de long) Année de retraite Avantages monétaires pour la 1 ère année de retraite Avantages monétaires pour la 2 ème année de retraite Avantages monétaires pour la 3 ème année de retraite Avantages monétaires pour la 4 ème année de retraite E02837,09/17/1937,Alexander SERTUCHE,1997,5925, ,6470.1, E01062,07/28/1922,Alice ROBERSON,1982,9850, , , E01417,02/11/1944,Allen OSWALD,2004,6999, , , E00356,11/03/1937,Amy FULKERSON,1992,6297, , , E02129,11/07/1945,Angela GILLMOR,2005,9608, , , Lisez tous les champs. Ne conservez que les observations des employés nés avant le 1 er janvier Convertissez le nom des employés en lettres majuscules, puis retirez tous les blancs sauf un entre le prénom et le nom. 3. Créez une nouvelle variable ne contenant que le nom de famille de l employé. 4. Changez l ID de l employé, en remplaçant le E en début de code par un R (pour retraité). 42
43 5. Calculez la prestation de retraite moyenne pour les quatre années, en arrondissant au centième d euro. 6. Créez une nouvelle variable correspondant à la date de naissance de l employé plus 60 ans au 1 er janvier. Par exemple, si un employé est né le 09/17/1937, la nouvelle valeur de date est 01/01/ Comparez la partie année de la nouvelle variable à l année de retraite. Si l année de retraite correspond à la portion année de la nouvelle variable, écrivez l observation dans une table SAS appelée RETIRE_AT_60. Sinon, écrivez l observation dans une table appelée EARLY_RETIRE. Sortie partielle de retire_at_60 : Obs Fullname Emp_birth_rate Emp_ID Year1 Year2 Year3 Year4 1 ALEXANDER SERTUCHE 2 ALICE ROBERSON 09/17/1937 R /28/1922 R Lastname Avg_retire Retire_year Birth_60 SERTUCHE /01/1997 ROBERSON /01/1982 Exercice 9 : Les données de la série TARIFS incluent le tarif du billet demandé pour chaque trajet et chaque classe de service (première, affaires et économique) pendant quatre années consécutives. Données de TARIFS : Obs trajet firstclass_ bus_year1 econ_year1 year $1,600 $1,090 $ $1,600 $1,090 $ $1,761 $1,201 $ $1,761 $1,201 $ $176 $120 $58 firstclass_ bus_year2 econ_year2 year2 $1,942 $1,323 $645 $1,942 $1,323 $645 $2,139 $1,458 $711 $2,139 $1,458 $711 $213 $145 $71 firstclass_ bus_year3 econ_year3 year3 $2,285 $1,557 $759 $2,285 $1,557 $759 $2,516 $1,715 $836 $2,516 $1,715 $836 $251 $171 $83 firstclass_ bus_year4 econ_year4 year4 $1,808 $1,232 $600 $1,808 $1,232 $600 $1,990 $1,357 $661 $1,990 $1,357 $661 $199 $136 $66 Écrire une étape DATA pour créer une série de données SAS appelée TARIFS_1ERE renfermant une observation par année pour les tarifs de première classe. La série résultante contient les variables TRAJET, YEAR et TARIF. La sortie prévue est la suivante : 43
44 Obs TRAJET YEAR TARIF Lecture de tables SAS Parmi les instructions disponibles dans l étape Data, certaines sont quasiment indispensables : il s agit d instructions de lecture. Sans l une d elles, l étape Data travaille sans repartir d une quelconque source de données, et créera donc un table contenant 0 ou 1 observation. Les principales instructions de lecture sont SET pour la lecture d une seule table SAS à la fois et MERGE BY pour la lecture simultanée de plusieurs tables Concaténation et chargement d une table : instruction SET Syntaxe : SET <nom_de_table1> <nom_de_tablen> ; La table résultante contiendra toutes les variables provenant des tables en entrée et des variables créées au cours de l étape. Exemple : A data NEW ; B ID set A B ; ID 1 run ; NEW ID Dans la table résultante, les séries de données ne sont pas triées. Une concaténation par l instruction SET empile les observations de tables SAS en fonction de la position relative des tables dans l instruction SET. Imbrication 44
45 Une imbrication intercale verticalement les observations à partir de deux ou plusieurs tables SAS en fonction d une ou plusieurs variables communes. Ce qui signifie que les données sont empilées verticalement et qu elles conservent leur ordre de tri d origine. Exemple : A data NEW ; B ID set A B ; ID 1 by ID ; 2 3 run ; NEW ID NB : il faudra trier préalablement les données par une PROC SORT (thème abordé ultérieurement). Exemple : on veut imbriquer deux tables SAS pour lesquelles les variables ne sont pas identiques (excepté la variable identifiant LNAME). A B LNAME DIVS DATE LNAME DIV MONTH DAY YEAR ALLEN A1 01DEC1998 ANDER B BADGE A2 16JUN1997 BASH B CARR A3 01SEP1998 COX B On va utiliser l option RENAME pour renommer DIV dans le fichier B. On va par ailleurs créer une date à partir des valeurs MONTH, DAY et YEAR en utilisant la fonction MDY. Le format général de cette fonction est le suivant : MDY(mois,jour,année) mois : indique une expression numérique représentant un nombre entier de 1 à 12. jour : indique une expression numérique représentant un nombre entier de 1 à 31. année : indique une expression numérique représentant un nombre entier qui identifie une année en particulier. Enfin, on va utiliser l option IN= pour détecter quelle table SAS a contribué à la création de l observation courante. Le format général de l option IN= est le suivant : Table_SAS (IN=variable) variable est une variable numérique temporaire avec une valeur de : 0 : pour indiquer faux ; la série de données n a pas contribué à l observation courante. 1 : pour indiquer vrai ; la série de données a contribué à l observation courante. data combine; set a(in=ina) b(in=inb rename=(div=divs)); by lname, if inb=1 then date=mdy(month,day,year); Résultats : LNAME DIVS DATE ALLEN A1 01DEC1998 ANDER B1 16JAN
46 BADGE A2 16JUN1998 BASH B2 16DEC2000 CARR A3 01SEP1998 COX B3 16DEC1999 Regroupement : utilisation des variables FIRST. et LAST. Si par exemple un fichier contient des observations au niveau individu, et que chaque individu contient un identifiant ménage, il peut être utile de créer une autre table, au niveau ménage, synthétisant une partie de l information disponible au niveau individu. On change alors le niveau d observation entre la table d entrée (niveau=individu) et le niveau de sortie (niveau=ménage). Après tri d une table par une procédure SORT (voir plus loin), l appel de cette table par une instruction SET nom_de_table ;BY liste_de_variables ; génère automatiquement, pour chaque observation une variable FIRST.variable_clé mise à 1 s il y a eu changement de clé depuis l observation précédente, et une variable LAST.variable_clé mise à 1 s il y a changement de valeur, pour la variable considérée, entre l observation courante et l observation suivante. Ces deux variables ne sont pas stockées dans la table de sortie. Par exemple, on a un fichier contenant les caractéristiques des logements successifs occupés par des ménages. Ces ménages sont repérés par le variable IDENTet le logement par la variable CN. On veut conserver uniquement les caractéristiques du 1 er logement renseigné dans la base (la variable CN est classé par ordre croissant, dans l ordre de l occupation des logements) : proc sort data=logement; by ident cn; data loge1; set logement; by ident; if first.ident; On verra en TP l utilisation des variables FIRST et LAST sur plusieurs clés. On peut également par une procédure assez proche, et en utilisant le mot-clé RETAIN, compter le nombre de logements successifs occupés par les ménages : 46
47 data loge; set logement; by ident; retain nb_log 0; if first.ident then nb_log=0; nb_log=nb_log+1; if last.ident; JOINTURES : instruction MERGE L instruction MERGE permet d apparier des tables selon une clé, qui est un identifiant commun aux différentes tables. Cette clé doit porter le même nom dans chacune des tables à apparier. Les tables indiquées après MERGE sont lues simultanément. Syntaxe : MERGE nom_de_table1 <(IN=nom_de_variable)>. nom_de_tablen <(IN=nom_de_variable)> ; BY <liste_de_variables> ; En l absence d instruction BY, l appariement se fait ligne à ligne, ce qui dans la plupart des cas n a que peu d intérêt. En fait, l appariement est surtout utile quand il est fait relativement à une clé commune aux différentes tables en entrée. Cette clé est inscrite dans l instruction BY. Les fichiers en entrée doivent être triés, dans le même ordre, selon la liste de variables énoncées dans l instruction BY. Exemple Pour l étude de la relation herbivores-environnement, on dispose également d une autre table indiquant la densité au km_ de neuf gros herbivores dans dix zones. Les herbivores sont étiquetés comme suit : A=Elephant, B=Warthog, C=Hippopotame, D=Reebuck, E=Watrbuck, F=Kob, G=Topi, H=Bushbuck et I=Buffle. Obs Zone A B C D E F G H I On apparie les tables présentant les caractéristiques physiques des zones étudiées et la densité au km_ des herbivores des 10 zones. proc sort data=parc1; by Zone; proc sort data=parc2; by Zone; data parc; merge parc1 parc2; by Zone; 47
48 On obtient la table SAS suivante: Obs ZONE HERB BOSQUET EAU HIPPO A B C D E F G H I 1 1 courte oui proche moyen haute oui éloignée aucun courte oui proche aucun courte oui proche importan courte oui moyenne aucun courte oui proche aucun courte non éloignée aucun courte oui moyenne importan courte non éloignée aucun courte non éloignée aucun L option IN= n est pas indispensable. Elle permet de sélectionner des observations selon le fichier d origine. Si par exemple on ne veut sélectionner que les observations de la table1, les instructions seront les suivantes : MERGE nom_de_table1(in=a). nom_de_tablen; BY <liste_de_variables> ; IF A ; Les observations absentes de la table 1 seront exclues de la table résultante. On a ainsi 4 types de jointures possibles : Jointure complète (Jointure sans condition) Jointure à gauche (IF A) Jointure à droite (IF B) Jointure interne (ou jointure stricte) (IF A ; IF B) Lorsqu on utilise l instruction BY avec l instruction MERGE, la table doit être préalablement triée ou indexée en fonction d une ou plusieurs variables BY. On doit alors trier les données à l aide de la procédure SORT, dont la syntaxe est : PROC SORT DATA=table_SAS1 OUT=table_SAS2 ; BY <DESCENDING> variable(s); RUN; La procedure SORT : réorganise les observations dans une table SAS crée une nouvelle table SAS comprenant les observations réorganisées remplace la table SAS d origine par la table par défaut peut trier en ordre croissant ou décroissant ne génère pas de sorties imprimées traite les valeurs manquantes comme la plus petite valeur possible. 48
49 Exemple : On veut fusionner les tables les tables EMPLOYES et SALAIRES et ne garder que les observations communes aux deux tables. EMPLOYES SALAIRES EMP_ID FIRSTNAME EMP_ID EMP_SALARY 1 RONALD ALICE JORN data STAFF; merge EMPLOYES(IN=EMPS) SALAIRES(IN=SAL); by EMP_ID; if EMPS=1 and SAL=1 then output; Résolution de conflits de données SAS convertit automatiquement une valeur de type caractère en une valeur de type numérique lorsque la valeur de type caractère est utilisée dans un contexte numérique tel que : affectation à une variable numérique, opération arithmétique, comparaisons logiques avec une valeur de type numérique, fonction qui accepte un argument de type numérique. Exemple : On a 7 fichiers correspondant à la classification des fonctions de santé : fichier H1 : capital formation of health care provider institutions fichier H2 : education and training of health personnel fichier H3 : research and development in health fichier H4 : food, hygiene and drinking water control fichier H5 : environmental health fichier H6 : administration and provision of social services in kind to assist living with diseases and impairments fichier H7 : administration and provision of health-related cash-benefits. Dans chacun des fichiers, on a deux variables caractères : le code au 2ème niveau (CODE) et l intitulé de la fonction (LIBELLE). Par exemple, pour le fichier H1 : 1. In-patient curative care 2. Day cases of curative care 3. Out-patient curative care. En fait, le code de ces fonctions est respectivement 11, 12, et 13. Donc si on envisage de fusionner ces 7 fichiers, il faut alors préalablement transformer les codes dans chaque fichier. Pour le fichier 1 par exemple, il suffit de faire : CODE = CODE+10 ; La variable code sera alors automatiquement convertie en variable numérique. Utilisation de la fonction INPUT pour convertir des données de type caractère en données de type numérique On peut effectuer une conversion explicite de type caractère à numérique grâce à l option INPUT : INPUT(variable,nom-informat) Le nom-informat doit contenir un point dans le nom (exemple : mmddyy10.). En fait, on procèdera en deux étapes : 1. On renomme la variable. 49
50 2. On crée une nouvelle variable avec le même nom que celui de la variable originale à l aide de la fonction INPUT. Fonctions de conversion Fonction Description Exemples Conversion d une Année!!PUT(YEAR(16436),4.) PUT(varNum,format.) variable numérique en _ Année 2004 variable caractère INPUT(varCar,informat.) Conversion d une variable caractère en variable numérique INPUT( 2004/12/31,yymmdd10.) _ Procédures connexes à la manipulation de données avec l étape Data Nous allons maintenant aborder des procédures connexes à la manipulation de données avec l étape Data : la PROC FORMAT (qui permet de définir des formats personnalisés), la PROC SQL (où l on programme en langage SQL des fonctionnalités assez analogues à l étape Data ou à d autres procédures), la PROC CONTENTS (qui produit la liste des caractéristiques d une table et le dictionnaire de ses variables), la PROC SORT (qui trie une table), la PROC PRINT (qui permet d éditer des listings), la PROC DATASETS (qui permet d effectuer des opérations globales sur les tables : copie, destruction, attribution d un nouveau nom ) Notion de format Le logiciel SAS propose une large palette de formats prédéfinis. Mais il arrive souvent que l on ait besoin de définir des formats personnalisés. Ces types de formats sont créés et gérés par la procédure format. Un format permet de regrouper plusieurs modalités sous un même libellé. On distingue des formats caractères, appliqués à des variables caractères, et des formats numériques, appliqués à des variables numériques. On aura donc deux étapes distinctes : création et gestion de formats : PROC FORMAT utilisation de formats : instructions de FORMAT existants dans de nombreuses PROC. Syntaxe : PROC FORMAT <LIB=bibliothequeDeSTockage> <liste d options> ; VALUE nom_de_format liste_de_valeurs= valeur1 formatée liste_de_valeurs= valeurn formatée ; RUN ; Plusieurs instructions VALUE peuvent être utilisées dans la même procédure FORMAT. Tous les formats sont stockés dans un catalogue FORMATS de la bibliothèque précisée via l option LIB. Par défaut, ce catalogue est dans la bibliothèque WORK. Les formats créés ne sont alors disponibles que le temps de la session SAS, et la procédure doit être réexécutée lors d une autre session pour recréer les formats. Le nom du format doit s écrire avec au maximum 8 caractères ($ inclus), sauf à partir de la version 9, où cette longueur maximale passe à 32 caractères ($ inclus). 50
51 Les caractères autorisés dans le nom d un format sont les mêmes que pour les noms de variables. Les chiffres ne sont pas autorisés ni comme premier, ni comme dernier caractère. Le point terminant le nom du format n est pas cité dans l instruction VALUE. Dans les valeurs à formater, majuscules et minuscules doivent être respectée. Chaque liste de valeurs peut être composée : d une valeur simple : exemple :75= Paris d une liste continue de valeurs :exemple :92-94= Petite couronne d une liste exhaustive de valeurs :exemple : = Petite couronne d une liste discontinue de valeurs :exemple : = région Parisienne Format de type numérique Par exemple, pour créer un format permettant le regroupement d âges en classes quinquennales, un masque serait créé de la manière suivante : PROC FORMAT ; VALUE FQUIN 15-19= 15 à 19 ans 20-24= 20 à 24 ans 25-29= 25 à 29 ans 30-34= 30 à 34 ans 35-39= 35 à 39 ans 40-HIGH= 40 ans et plus ; RUN ; L application de ce masque à toute variable permet de regrouper les modalités 15, 16, 17, 18 et 19 au sein d une même modalité étiquetée «15 à 19 ans». La valeur de gauche doit être inférieure à celle de droite. Pour exclure une borne de l intervalle, un signe < sera placé immédiatement à gauche ou à droite du tiret. On peut utiliser en guise de borne pour les intervalles les mots-clés HIGH et LOW. Ces mots-clés sont sans guillemets. valeur1 valeur 2 les deux bornes de l intervalle sont incluses valeur1 <- valeur 2 la borne inférieure est exclue, tandis que la borne supérieure est incluse valeur1 -< valeur 2 la borne inférieure est incluse, la borne supérieure exclue valeur1 <-< valeur 2 les deux bornes de l intervalle sont exclues PROC FORMAT LIBRARY=base.formats; VALUE Fnbenf LOW-2= Moins de 2 enfants 3<-<5= De 3 à 4 enfants 5-HIGH= Plus de 5 enfants ; RUN ; Cet exemple crée un format pouvant être appliqué au nombre d enfants. La valeur 3 sera affichée telle qu elle car elle n appartient à aucune tranche du format Fnbenf défini ici. Format de type caractère Pour créer un format caractère, il faut faire précéder le nom du format par le signe $ et mettre les valeurs définies entre quotes. Le regroupement de modalités qualitatives s effectuera de la manière suivante : 51
52 PROC FORMAT ; VALUE $ REGION Paris, Hauts-de-Seine, Seine-Saint-Denis, Val-de-Marne, Yvelines, Val d Oise, Seine et Marne = Ile-de-France Morbihan, Ile et Villaine, Côtes d Armor, Finistère = Bretagne ; Mots clés réservés : la valeur LOW désigne la plus petite valeur rencontrée dans la table la valeur HIGH désigne la plus grande la modalité OTHER désigne toutes les valeurs non prévues par les autres classes. Description de formats existants Lorsqu on dispose d un catalogue de formats assez volumineux, il est fréquent que l on souhaite visualiser le codage d un format donné (passage des valeurs initiales aux valeurs formatées). Pour cela, il suffit d utiliser la procédure FORMAT avec l instruction SELECT ou EXCLUDE en conjonction de l option FMTLIB. La fenêtre Output contient alors des tableaux récapitulatifs des formats créés. Ils sont affichés par ordre alphabétique de leurs noms. Exemples : proc format lib=a fmtlib; select quin; proc format lib=a fmtlib; exclude quin; Utilisation des formats personnalisés Les formats personnalisés sont utilisables au même titre que les formats prédéfinis. Ils peuvent être utilisés pour formater l affichage des données dans les tables ou dans certaines procédures. Si les formats que l on souhaite utiliser sont stockés dans une bibliothèque autre que WORK, alors l instruction OPTION FMTSEARCH = (mabib1 mabib2 WORK) ; est nécessaire pour y accéder. SAS ne recherche des formats que dans les bibliothèques énumérées : il est indispensable donc de préciser également la librairie WORK. 52
53 Exemple option fmtsearch=(a WORK); proc print data=recensement; var age; format age fqui.; Le format appliqué à la variable age a pour effet de la transformer en 6 classes (si tous les âges sont compris sont supérieurs ou égaux à 15). Si un même format s applique à plusieurs variables, on indiquera la liste des variables sur lesquelles il s applique (séparées par des blancs), suivi du nom du format (suivi de.). S il s agit d un format pour une variable caractère, il sera précédé de $, comme par exemple : format dpt $region. ; pour appliquer le format region aux départements Une alternative à l étape Data : la procédure SQL Le SQL (Structured Query Language) est le langage universel de gestion des données informatiques des SGBD relationnels. La procédure SQL permet d obtenir un bon nombre de résultats similaires à ceux d une étape Data. Elle permet entre autres de : créer une vue logique ou une table lister le contenu d une table en se restreignant à certaines variables et certaines observations réaliser des fusions et des jointures entre des tables trier une table synthétiser une table à l aide de statistiques. Syntaxe : PROC SQL <option(s)> ; Instructions en langage SQL ; QUIT ; Entre les deux instructions PROC SQL et QUIT, le seul langage autorisé est le SQL. Extraction de données Une table SAS peut être créée par la commande CREATE TABLE. La table SAS reçoit ainsi un nom et des variables. La table existe physiquement mais elle est vide de données. Syntaxe : PROC SQL ; CREATE TABLE nom_de_table ( variable1 type1(long1) <LABEL= label1 FORMAT=fmt1 INFORMAT=inf1>, variable2 type2(long2) <LABEL= label2 FORMAT=fmt1 INFORMAT=inf1>, variable3 type3(long3) <LABEL= label3 FORMAT=fmt1 INFORMAT=inf1>, ); QUIT ; Le type peut être : CHAR : alphanumérique NUM : numérique INTEGER : entier (pas besoin de préciser la longueur). L instruction INFORMAT indique quel est le format de lecture, l instruction FORMAT quel est le format de sortie (écriture). 53
54 Exemple : créer la table PARC avec les variables : Zone (ZONE), entier Hauteur de l herbe (HERB), caractère (longueur 6) Présence de bosquets (BOSQUET), caractère (longueur 3) Accès à l eau (EAU), caractère (longueur 8) Présence d hippopotames (HIPPO), caractère (longueur 8) proc sql; create table parc( ZONE integer label='zone', HERB char(6) label='hauteur de l"herbe', BOSQUET char(3) label='présence de bosquets', EAU char(8) label='accès à l"eau', HIPPO char(8) label='présence d"hippopotames'); quit; Chaque définition de variable est séparée par une virgule. La commande SELECT Syntaxe : SELECT variable <,variable> FROM nom_de_table ou nom_de_vue <,nom_de_table ou nom_de_vue> <WHERE expression> <GROUP BY variable <,variable > > <HAVING expression> <ORDER BY variable <,variable> >; La commande SELECT permet de rechercher des informations par une sélection selon différents critères : on liste les variables (séparées par des virgules) dans l ordre d apparence voulu. Pour sélectionner toutes les variables d une table, l astérisque (*) peut être utilisée à la place de la liste de toutes les variables. Il faut préciser dans quelle table les données sont stockées avec FROM suivi du nom de la table. Exemple proc sql; select ZONE, HERB from parc3 where ZONE>6; quit; Le résultat d une requête SELECT est par défaut affiché dans l OUTPUT : ZONE HERB ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 7 courte 8 courte 9 courte 10 courte 11 courte 12 haute 13 courte Mais elle peut aussi être une table SAS en utilisant la syntaxe suivante : CREATE TABLE nom_de_table AS SELECT 54
55 Exemple : on sélectionne toutes les variables pour les zones 7 et plus. proc sql; create table extract as select * from parc3 where ZONE>6; quit; La commande WHERE La clause WHERE permet de spécifier un critère de sélection, appelé prédicat. Le prédicat est une expression logique composée d une suite de conditions combinées entre elles par les opérateurs logiques AND, OR ou NOT et des parenthèses. Un élément d une expression logique peut prendre les formes suivantes : comparaison à une valeur comparaison à une fourchette de valeurs (BETWEEN) comparaison à une liste de valeurs (IN) comparaison à un filtre (LIKE) : _ remplace 1 caractère, % remplace 1 ou plusieurs caractères. Exemple : créer une table EXTRACT des zones 7 et plus et dont l accès à l eau contient la chaîne de caractère «loig». proc sql; create table extract as select * from parc3 where ZONE>6 and EAU like '%loig%'; On obtient la table EXTRACT suivante : Obs ZONE HERB BOSQUET EAU HIPPO 1 7 courte non éloignée aucun 2 9 courte non éloignée aucun 3 10 courte non éloignée aucun 4 12 haute oui éloignée aucun La clause ORDER BY La clause ORDER BY permet de trier le résultat de la requête d après la valeur d une ou plusieurs variables. En ajoutant DESC, on précise l ordre décroissant. Par défaut, le tri se fait par ordre croissant. Syntaxe : ORDER BY variable1 <DESC>, variable2 <DESC> Les options suivantes de la proc SQL permettent de restreindre le nombre d observations traitées : INOBS=n OUTOBS=n restreint à n le nombre d observations de chaque table à incorporer (les n premières). Ceci est utile pour tester des requêtes sur des fichiers très longs. Il suffit alors de choisir un n petit puis d ôter cette option si la requête donne satisfaction. restreint à n le nombre d observations en sortie (les n dernières). 55
56 Exemple : trier la table parc3 par la variable ZONE (ordre descendant) et ne conserver que les variables ZONE, HIPPO, EAU et la dernière observation pour laquelle il existe un bosquet. proc sql outobs=1; select ZONE,HIPPO,EAU from parc3 where BOSQUET='oui' order by ZONE desc; Il s affiche dans la fenêtre OUTPUT : ZONE HIPPO EAU ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 13 aucun proche Supprimer les doublons : option DISTINCT Par défaut, la procédure SQL affiche le résultat d une requête sans éliminer les doublons. Il est possible de ne garder qu un exemplaire de chaque ligne en ajoutant DISTINCT dans la clause SELECT. Exemple : proc sql; select distinct HERB, BOSQUET, EAU from parc3 order by HERB desc; Elimine les doublons sur les variables HERB, BOSQUET et EAU. Dans la fenêtre OUTPUT s affiche le résultat suivant : HERB BOSQUET EAU ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ haute oui éloignée courte non éloignée courte oui moyenne courte oui proche Regrouper les modalités d une variable : la clause GROUP BY La clause GROUP BY permet de regrouper les modalités d une variable. Cette clause est utilisée uniquement lorsque la requête utilise une fonction de groupe. Sans la clause GROUP BY, la somme est effectuée sur la totalité de la table. SELECT fonction (variable) FROM table GROUP BY variable1, variable2 L expression HAVING permet d opérer sur un sous-ensemble d observations de la table. C est l équivalent du WHERE appliqué au groupe. La clause GROUP BY doit toujours précéder une expression HAVING et définit le groupe sur lequel l expression HAVING va opérer. On utilise l expression HAVING lorsque la requête utilise une fonction de groupe (AVG, COUNT ). Exemple : HAVING expression sur le résultat d une fonction somme SELECT fonction(variable) AS nomvar FROM table GROUP BY variable1, variable2 HAVING nomvar expression 56
57 Exemple proc sql; select mean(gini) as Mgini from pays.russet group by Demo having Mgini>70; quit; Regroupement par type de régime (Demo) et calcul de la moyenne des coefficients de gini. Sélection des observations pour lesquelles la moyenne (Mgini) est supérieure à 70. Les fonctions Les fonctions de groupe effectuent un calcul sur l ensemble des observations d une table spécifiée après la clause FROM ou sur chaque groupe défini par une clause GROUP BY. Ces fonctions sont les suivantes : Syntaxe : MEAN, AVG : moyenne COUNT, N : compte le nombre de valeurs non manquantes CV : coefficient de variation MAX : donne la plus grande valeur d une variable MIN : donne la plus petite valeur d une variable SUM : somme VAR : variance SELECT fonction1(variable) <AS nomvar1 LABEL= label >, fonction2(variable) <AS nomvar2 LABEL= label >, FROM table GROUP BY variable AS permet de donner un nom à la variable résultat lorsque l on crée une table en sortie (CREATE TABLE). LABEL permet d associer un label à la colonne. Exemple : calculer la moyenne du coefficient de gini, les coefficients minimal et maximal de gini par type de régime pour la table pays.russet. proc sql; select Demo, avg(gini) LABEL='Moyenne des coefficients de Gini', min(gini) LABEL='Coefficient minimal', max(gini) LABEL='Coefficient maximal' from pays.russet group by Demo; quit; On obtient la sortie suivante : Moyenne des coefficients Coefficient Coefficient Demo de Gini minimal maximal ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
58 L expression when Cette expression permet de changer la représentation des données en donnant un code chiffré à une chaîne de caractères ou inversement, en donnant à un code un intitulé plus significatif. SELECT variables, CASE WHEN expression THEN valeur1 WHEN expression THEN valeur2 ELSE valeurn END <AS sortie LABEL= Libellé > AS permet de donner un nom à la nouvelle colonne. Exemple : on recode en binaire la variable HIPPO : 1 si présence d hippopotames, 0 sinon. proc sql; select *, case when HIPPO='aucun' THEN 0 else 1 end as BIN_HIP from parc3; On obtient la sortie suivante : ZONE HERB BOSQUET EAU HIPPO BIN_HIP ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 1 courte oui proche moyen 1 2 haute oui éloignée aucun 0 3 courte oui proche aucun 0 4 courte oui proche importan 1 5 courte oui moyenne aucun 0 6 courte oui proche aucun 0 7 courte non éloignée aucun 0 8 courte oui moyenne importan 1 9 courte non éloignée aucun 0 10 courte non éloignée aucun 0 11 courte oui proche importan 1 12 haute oui éloignée aucun 0 13 courte oui proche aucun 0 Les jointures Pour écrire une jointure, il suffit de citer les variables recherchées dans la clause SELECT, et de préciser dans la clause WHERE (ou ON) la condition d égalité entre les variables qui réalisent la jointure entre les tables. La clause FROM doit contenir le nom de toutes les tables à lier. Dans la clause FROM, il est possible de donner un alias à une table : FROM nom de la table AS alias Ceci est utile lorsque les tables à joindre ont des variables qui ont le même nom. On désigne alors la variable par alias.variable. 1/ La condition de fusion des tables est exprimée dans une clause WHERE. Elle peut porter sur plusieurs variables. FROM table1, table2 WHERE condition Cette jointure correspond au cas IF A AND IF B du merge en SAS de base. On sélectionne uniquement les observations communes. 58
59 PROC SQL ; SELECT a.*, b.* FROM table1 AS a, table2 AS b WHERE a.var1=b.var1; QUIT; 2/ Jointure à gauche : la condition de fusion des tables est exprimée dans une clause ON. FROM table1 LEFT JOIN table2 ON condition Elle correspond au cas IF A du merge. On sélectionne toutes les observations de la table A et les observations de la table B qui correspondent (ON). PROC SQL ; SELECT a.*, b.* FROM table1 AS a LEFT JOIN table2 AS b ON a.var1=b.var1; QUIT; 3/ Jointure à droite : FROM table1 RIGHTJOIN table2 ON condition Elle correspond au cas IF B du merge. On sélectionne toutes les observations de la table B et les observations de la table A qui correspondent (ON). PROC SQL ; SELECT a.*, b.* FROM table1 AS a RIGHT JOIN table2 AS b ON a.var1=b.var1; QUIT; 4/ Jointure «full» FROM table1 FULL JOIN table2 ON condition Elle correspond au merge by sans condition. On sélectionne toutes les observations de la table A et toutes les observations de la table B en mettant les observations communes en correspondance. PROC SQL ; SELECT a.*, b.* FROM table1 AS a FULL JOIN table2 AS b ON a.var1=b.var1; QUIT; Cette méthode de jointure pose en fait un problème. Pour les observations de table2 qui n étaient pas dans table1, var1 n est pas renseignée dans la table ou la sélection résultante. Aussi, la jointure full n est intéressante que si les deux tables contiennent les mêmes observations. Sinon, il est préférable d effectuer la fusion à partir d une étape data, avec l instruction merge. 59
60 5/ Produit cartésien On fusionne chaque observation de la table A avec chaque observation de la table B. Si A contient na observations et B nb observations, le résultat contient naxnb lignes. PROC SQL ; SELECT a.*, b.* FROM table1 AS a table2 AS b; QUIT; 6/ Jointure d une table avec elle-même Il est possible de faire une jointure d une table avec elle-même pour obtenir davantage d informations. Exemple : Nous avons la table EMPLOI avec les variables Empnum (numéro de l employé) Empnom (nom de l employé) Emptitre (titre de l employé) Numsup (numéro du supérieur) EMPNUM EMPNOM EMPTITRE NUMSUP 101 John head man Betty manager Joe respvent Jeff respvent Sam manager Nick respvent 401 Construire une table avec pour chaque employé le nom de son supérieur hiérarchique (nomsup) et son titre (titresup). proc sql; select a.*, b.empnom as SUPNOM, b.emptitre as SUPTITRE from emploi as a, emploi as b where a.numsup=b.empnum; quit; EMPNUM EMPNOM EMPTITRE NUMSUP SUPNOM SUPTITRE 101 John head man Betty manager 101 John head man. 213 Joe respvent 201 Betty manager 214 Jeff respvent 201 Betty manager 401 Sam manager 101 John head man. 412 Nick respvent 401 Sam manager 60
61 L union L opérateur UNION est un opérateur ensembliste. Il effectue l union des résultats de deux requêtes SELECT, c est à dire qu à partir de deux tables résultats, il en crée une troisième comportant l ensemble des observations des deux tables de départ, en éliminant les doublons parfaits et en triant selon l ordre des variables dans la commande select. PROC SQL ; SELECT variables FROM table1 UNION SELECT variables FROM table2 ; QUIT ; Exemple : PROC SQL ; CREATE TABLE table3 AS SELECT * FROM table1 UNION SELECT * FROM table2 ; QUIT ; Cette étape correspond dans ce cas à : DATA table3 ; SET table1 table2 ; RUN; PROC SORT DATA=table3 noduplicates; BY _ALL_; RUN; La commande INSERT INTO Cette commande est utilisée pour insérer des observations dans une table. Elle nécessite le nom de la table, le nom des variables à initialiser et la valeur à leur assigner. INSERT INTO table SET variable1=valeur1, variable2=valeur2 Exemple : insérer une observation dans la table parc proc sql; insert into parc3 set ZONE=14, HERB='haute', BOSQUET='non', EAU='éloignée', HIPPO='moyen' ; quit; Associée à une clause SELECT, cette commande permet de copier un sousensemble d une table dans une autre. La table cible doit exister préalablement, et les types de données doivent correspondre de façon très précise. 61
62 Exemple : insérer des observations de la table parc4 (zone 14 à 20) dans la table parc3 proc sql; insert into parc3 select * from parc4 where ZONE>13; quit; On peut également insérer les valeurs de chaque observation avec l instruction VALUES. INSERT INTO table VALUES (valeur1, valeur2, valeur3 ) Exemple : insérer 5 observations dans la table parc3 proc sql; insert into parc3 values(15,'haute','oui','proche','moyen') values(16,'courte','non','proche','moyen') values(17,'haute','oui','proche','aucun') values(18,'haute','non','éloignée','moyen') values(19,'courte','non','éloignée','importan'); quit; La commande UPDATE La commande UPDATE spécifie le nom de la table qui va être modifiée, suivi d une clause SET définissant les modifications à apporter, et d une clause WHERE avec le critère précisant les observations à modifier. UPDATE TABLE SET variable1=valeur1, variable2=valeur2 WHERE condition Pour modifier toutes les observations d une table, il n est pas nécessaire d inclure une clause WHERE. Exemple : remplacer la modalité éloignée de la variable EAU par loin : proc sql; update parc3 set EAU='loin' where EAU='éloignée'; quit; La commande DELETE Cette commande consiste en une clause DELETE FROM spécifiant le nom de la table concernée, et d une clause WHERE avec le critère précisant les observations à supprimer. DELETE FROM table WHERE condition Exemple : détruire les observations des zones 14 et plus. proc sql; delete from parc3 where ZONE>13; quit; 62
63 La procédure CONTENTS : afficher le contenu d une table PROC CONTENTS affiche la description d une table : nombre d observations, nombre de variables, liste et position des variables. Syntaxe : PROC CONTENTS <DATA=nom_de_table> ; <OUT=> ; RUN ; OUT= : stocke le résultat de la demande dans une table SAS. Le listing qui en résulte se présente en quatre grandes parties. L exemple suivant est la description de la table chien1. La première partie recense les grandes caractéristiques de la table. On y retrouve son nom, la version de SAS qui l a créée, sa date de création et sa date de dernière modification, son nombre d observations et de variables, si la table présente un tri, etc. Data Set Name WORK.CHIEN1 Observations 27 Member Type DATA Variables 8 Engine V9 Indexes 0 Created jeudi 30 décembre h 43 Observation Length 80 Last Modified jeudi 30 décembre h 43 Deleted Observations 0 Protection Compressed NO Data Set Type Sorted YES La deuxième partie traite des caractéristiques physiques de cette table. Cette partie présente peu d intérêt. Data Set Page Size 8192 Number of Data Set Pages 1 First Data Page 1 Max Obs per Page 101 Obs in First Data Page 27 Number of Data Set Repairs 0 File Name C:\DOCUME~1\WOLBER_O\LOCALS~1\Temp\SAS Temporary Files\_TD1256\chien1.sas7bdat Release Created M3 Host Created XP_PRO La partie suivante présente les caractéristiques des différentes variables. Alphabetic List of Variables and Attributes # Variable Type Len Format Informat Label 6 AFFECTION Num 8 AFFECTION 7 AGRESSIVITE Num 8 AGRESSIVITE 8 FONCTION Num 8 FONCTION 5 INTELLIGENCE Num 8 INTELLIGENCE 1 NOM Char 22 $22. $22. NOM 3 POIDS Num 8 POIDS 2 TAILLE Num 8 TAILLE 4 VELOCITE Num 8 VELOCITE Enfin, une dernière partie, facultative, décrit le tri dont la table fait éventuellement l objet : Sort Information Sortedby NOM TAILLE POIDS VELOCITE INTELLIGENCE AFFECTION AGRESSIVITE FONCTION Validated YES Character Set ANSI Sort Option NODUPKEY PROC CONTENTS peut également afficher la liste de toutes les variables présentes dans une librairie. Il suffit alors de coder PROC CONTENTS DATA=nom_de_librairie._ALL _; 63
64 La procédure SORT : trier une table selon une clé PROC SORT est utilisée afin de trier les observations d une table SAS selon une ou plusieurs variables. Les observations, une fois triées, peuvent être stockées dans une nouvelle table ou remplacer la table originale. Syntaxe : PROC SORT DATA=nom_de_table OUT=nom_de_table ; BY <DESCENDING> variable1 <DESCENDING> variablen; DATA=nom_de_table OUT=nom_de_table Table SAS en entrée à trier. Table SAS en sortie. Si cette option est absente, la table d origine est remplacée par la table triée. La spécification des clés de tris (variables selon les valeurs desquelles la table sera ordonnée) se fait dans l instruction BY : les noms des variables y sont énumérés à la suite, séparés par au moins un espace. La première variable citée servira à ordonner les observations ; en cas d ex aequo, la deuxième variable (si l instruction en compte plusieurs) servira à les ordonner et ainsi de suite Par défaut, le tri selon chacune de ces variables est ascendant. Pour préciser que l ordre de tri est décroissant selon une des variables, son nom doit être précédé du mot-clé DESCENDING. Exemple : on veut trier les pays par régime politique, puis par ordre alphabétique : proc sort data=pays.russet; by demo pays; L option NODUPKEY L option NODUPKEY ajoute à l opération de tri une suppression des doublons observés sur les variables de tris. Ces observations en doublon étant éliminées de la table créée par la procédure SORT, il est recommandé de combiner systématiquement l emploi des options NODUPKEY et OUT. Cette option ne recherche que les doublons sur les variables citées dans l instruction BY. Si on veut éliminer les observations exactement identiques, on utilisera l instruction BY _ALL_. Exemple : proc sort data=chien out=chien1 nodupkey; by _all_; La procédure SORT avec l option NODUPKEY génère un message supplémentaire dans la fenêtre Log, indiquant le nombre de doublons expurgés : NOTE: There were 30 observations read from the data set WORK.CHIEN. NOTE: 3 observations with duplicate key values were deleted. NOTE: The data set WORK.CHIEN1 has 27 observations and 8 variables. 64
65 La procédure PRINT : éditer des listings Cette procédure est utilisée pour imprimer tout ou une partie des valeurs d une table SAS. Elle permet aussi d imprimer des totaux et sous totaux pour des variables numériques. Syntaxe : PROC PRINT DATA=nom_de_la_table <liste d options> ; VAR liste_de_variables ; ID liste_de_variables ; BY liste_de_variables ; PAGEBY variable ; SUMBY variable ; SUM liste_de_variables ; Le mot clé DATA= permet de spécifier la table à traiter (la dernière si aucun nom de table n est précisé). Ce mot clé se retrouve dans la totalité des procédures. Si la table est temporaire, on précisera uniquement son nom, si elle a été stockée de manière permanente, on la fera précéder du nom logique de la librairie de stockage (défini dans l instruction LIBNAME). Instructions : VAR liste de variables à imprimer. Toutes par défaut. BY des impressions séparées sont effectuées pour chaque modalité des groupes BY. Le fichier doit avoir été auparavant trié ou indexé selon ces variables. ID permet l identification des observations sur le listing par une variable définie à la place du numéro d observation. PAGEBY permet de contrôler les variables indiquées en BY pour lesquelles s effectue la rupture de page. SUM affiche le total de la (des) variable(s) citées dans l instruction SUM. S il y a également une instruction BY, un sous-total sera édité à la fin de chaque bloc. SUMBY s utilise uniquement avec les instructions SUM et BY. Affiche un soustotal de la (ou des) variable(s) totalisée(s) pour chaque groupe. La procédure PRINT peut s utiliser sans aucune instruction. Dans ce cas, SAS imprime toutes les variables et toutes les observations de la table en entrée (la dernière table modifiée dans la session courante si aucune table n est spécifiée) et les formats d affichage des variables sont ceux préalablement attribués aux variables de la table SAS. Ainsi, pour lister entièrement une table SAS, le programme de base est très simple. Par exemple, pour lister entièrement la table pays.russet : proc print data=pays.russet; 65
66 Les en-têtes des colonnes sont affichées avec les noms SAS des variables ; Une colonne Obs donné le numéro de ligne des observations sur la gauche du listing. Quelques options de l instruction PROC PRINT : LABEL affiche le label des variables plutôt que leur nom en tête du listing. NOOBS supprime du listing la colonne «OBS». N="libellé1" "libellén" DOUBLE HEADING=H ou V ROWS=PAGE L option OUT= n est pas valide ici. Listing d extraits de tables avec l instruction BY, on pourra préciser un libellé différent par bloc. Il existe aussi un option N sans texte derrière : elle ajoute en bas de listing le nombre d observations affichées. affiche la table avec une ligne vierge entre 2 observations. spécifie l orientation des en-têtes de colonne. permet de n imprimer qu une liste de variables par page. Si les variables ne peuvent toutes figurer sur la largeur de page, le nombre maximum d observations sera imprimé pour une même série de variables sur une page, puis ces mêmes observations seront inscrites pour une autre série de variables sur une autre page. On sélectionne des informations sur la table pays.russet (lignes et colonnes). Par exemple, on ne veut que les démocraties stables : proc print data=pays.russet (where=(demo=1)) noobs; id pays; 66
67 Listing avec totalisation On veut imprimer le nombre de tués lors de manifestations violentes et les sommer en fonction de l instabilité politique (démocratie stable, démocratie instable, dictature). On utilise l instruction SUM (affichage du total d une variable) et comme l on souhaite simultanément obtenir des sous-totaux selon les modalités d une variable en catégories, on utilise simultanément l instruction BY. L instruction BY demande un tri préalable de la table. proc sort data=pays.russet; by demo; proc print; var pays deat; by demo; sum deat; On obtient dans la fenêtre Sortie l impression suivante (on a tronqué quelques observations) : The SAS System 11:15 Friday, December 31, Demo= Obs Pays Deat 1 Australie 0 2 Belgique Suisse 0 15 Uruguay Demo Demo= Obs Pays Deat 16 Argentine Autriche Japon 1 26 RFA Demo Demo= Obs Pays Deat 27 Bolivie Brésil Venezuela Yougoslavie Demo 5705 ==== 6285 Exemple : on veut imprimer les recettes et les dépenses d une multinationale par région et par Etat. On veut les sommes par région, mais pas par Etat. proc sort data=ventes; by Region Etat; 67
68 proc print data=ventes noobs; by Region Etat; sum Depenses Recettes; sumby Region; label Region='Ventes Région'; format Recettes Depenses comma10.; title 'Revenue et Dépenses par Région'; Ventes Région=Nord Etat=Allemagne Mois Depenses Recettes MAR95 9,800 13, Ventes Région=Nord Etat=Italie Mois Depenses Recettes FEB95 3,000 4,000 MAR95 6,000 5, Region 18,800 22, Ventes Région=Sud Etat=Allemagne Mois Depenses Recettes FEB95 8,500 11, Ventes Région=Sud Etat=France Mois Depenses Recettes JAN95 2,000 8,000 FEB95 1,200 6, Region 11,700 25,000 ========== ========== 30,500 47, La procédure DATASETS : effectuer des opérations globales sur les tables PROC DATASETS permet d effectuer des opérations globales sur les tables : copie, destruction, attribution d un nouveau nom Syntaxe : PROC DATASETS LIBRARY=nom_de_librairie ; <DELETE> ; Les principales opérations couvertes par cette procédure sont : CONTENTS : lister la description d une table (analogue à PROC CONTENTS) CHANGE ou AGE : renommer une table COPY : copier ou déplacer un ensemble de tables d une librairie à une autre DELETE : détruire un ensemble de tables APPEND : concaténer deux tables Copie de tables ou COPY OUT=librairie <IN=librairie> <MOVE> ; SELECT liste_de_tables ; COPY OUT=librairie <IN=librairie> <MOVE> ;EXCLUDE liste_de_tables ; SELECT permet de ne recopier que certaines tables de la librairie. EXCLUDE indique les tables à ne pas recopier. IN indique la librairie source, où se trouvent les tables à recopier. OUT indique la librairie destination. Si le mot clé MOVE est présent, les tables seront détruites du répertoire origine (indiqué dans le IN), après copie. 68
69 Destruction de tables DELETE liste_de_tables ; Les tables mentionnées sont détruites de la librairie. Attribuer un nouveau nom aux tables Instruction CHANGE : CHANGE Instruction AGE ancien_nom_table1=nouveau_nom_table1 <ancien_nom_table2=nouveau_nom_table2 > ; AGE nom1 nom2 nom3 nomn ; La table nom1 est renommée nom2, la table nom2 est renommée nom3, la table nomn est détruite. Concaténation de tables Deux tables ayant la même structure peuvent être mises bout à bout, la table résultante ayant un nombre d observations égal à la somme des observations des deux tables existantes. APPEND BASE=table_SAS DATA=table_SAS <FORCE>; Par défaut, seules les variables présentes dans chacune des deux tables (même nom, même type, même longueur) sont prises en compte dans l opération de concaténation. Le mot clé FORCE permet de prendre aussi en compte : les variables présentes dans la table de base. Celles uniquement présentes dans la table mentionnée dans DATA= ne seront pas prises en compte. Les variables n ayant pas le même type dans chacune des deux tables, le type résultant est le type de la variable présente dans la table de BASE. Les variables de longueur différentes, la longueur résultante est la longueur de la variable dans la table de BASE. 69
70 5. Autres procédures On détaillera maintenant quelques procédures usuelles : PROC TABULATE (pour les tableaux croisés statistiques), PROC MEANS (pour le calcul de statistiques descriptives), PROC FREQ (pour l édition de tableaux de fréquence et les tests du Chi-2 et assimilés), PROC CORR (calculs de corrélations), PROC UNIVARIATE (description de la distribution d une variable) et PROC IML (calculs matriciels). On abordera en TP les principales procédures nécessaires à une analyse statistique poussée (régressions, ACP ) Les points communs des procédures d analyse statistique La sélection de l échantillon d étude Pour effectuer une sélection des observations de la table SAS spécifiée en entrée d une procédure SAS, on peut utiliser l option WHERE= : PROC NOMPROC DATA=nomlib.nomtableentree (WHERE=(expression)); Instructions; RUN; La sélection des variables d analyse Pour sélectionner les variables analysées dans les procédures de statistique, on utilise généralement l instruction VAR. Elle est valable dans un grand nombre de procédures statistiques, en particulier MEANS, UNIVARIATE et CORR. Les variables numériques sont les seules autorisées dans une instruction VAR ou les procédures statistiques. VAR variable(s)numérique(s) ; En l absence d une instruction VAR dans les procédures où cette dernière est valide, la procédure utilisera toutes les variables numériques de la table SAS en entrée L analyse statistique par sous-groupes Pour mener une analyse sur plusieurs sous-groupes d observations, on dispose des instructions CLASS et BY. BY <DESCENDING> variable(s) ; CLASS variable(s) ; On obtient des résultats par sous-groupe étudié mais l affichage des sorties de résultats diffère généralement selon l emploi des instructions BY ou CLASS. 70
71 Différences entre les instructions BY et CLASS dans les procédures de statistique Instruction BY Valable dans toutes les procédures d analyse statistique Les valeurs manquantes de chaque variable du BY constituent un sousgroupe qui est pris en compte dans l analyse. Nécessite un tri préalable de la table en entrée : tri par la même liste de variables que celle de l instruction BY et dans le même ordre. Pendant la phase de calcul, SAS ne garde en mémoire que les observations d un sous-groupe à la fois Le regroupement des valeurs d une variable Instruction CLASS Valable uniquement dans les procédures MEANS, UNIVARIATE et TTEST. Par défaut, les valeurs manquantes des variables de classe ne sont pas prises en compte dans l analyse. Ne nécessite pas de tri préalable de la table en entrée. Toutes les observations de la table sont conservées pendant la phase de calculs. On évitera CLASS pour les tables volumineuses. Pour créer des sous-groupes d observations en n utilisant pas toutes les valeurs distinctes d une variable, mais en faisant des regroupements, il est possible d utiliser une instruction FORMAT combinée avec la présence d une instruction BY, CLASS ou TABLE. Cette démarche sera utile pour mettre une variable quantitative en classes sans avoir à créer une nouvelle variable La pondération des observations Dans certains cas de figure, il peut s avérer nécessaire de pondérer les observations de la table en entrée par les valeurs d une variable numérique. Pour cela, on dispose des instructions WEIGHT ou FREQ. Les deux instructions ne peuvent pas être utilisées simultanément. WEIGHT FREQ variablenumérique ; Avec ces deux instructions, les observations ayant un poids négatif ou nul sont ignorées dans les calculs. En outre, avec FREQ, les valeurs non entières sont tronquées au nombre entier inférieur. La principale différence est la suivante : chaque valeur de l instruction WEIGHT est considérée comme le poids de l observation correspondante : le nombre d observations renseignées considéré ne change pas. Chaque valeur de l instruction FREQ est considérée comme le nombre d occurrences de l observation correspondante : le nombre d observations renseignées considéré est égal à la somme des pondérations données dans l instruction FREQ. 71
72 5. 2. La procédure TABULATE : créer des tableaux de synthèse La procédure TABULATE permet de créer des tableaux de synthèse à une dimension ou des tableaux croisés à plusieurs dimensions. La procédure TABULATE s appuie sur trois instructions particulières : CLASS, VAR et TABLE. Syntaxe : PROC TABULATE DATA=tableSAS <options> ; CLASS variable(s) ; VAR variable(s)_de_calcul ; TABLE (structure des lignes du tableau), (structure des colonnes du tableau)* (calculs apparaissant dans les cases du tableau) ; RUN ; CLASS permet de lister les variables qui spécifient des catégories. Ces catégories constituent des lignes et/ou des colonnes du tableau. Par défaut, les valeurs manquantes de ces variables n apparaissent pas dans le tableau ; VAR identifie une ou plusieurs variables numériques comme étant celles sur lesquelles des statistiques seront calculées. Les valeurs manquantes de ces variables ne participent pas aux calculs des statistiques. En l absence de statistiques et de variables numériques citées dans VAR, la procédure TABULATE produit des comptages d observations (N). TABLE est une instruction obligatoire. Elle permet de spécifier l organisation du tableau ainsi que son aspect. On y décrit les variables à mettre dans le tableau, les statistiques à afficher et éventuellement d autres caractéristiques comme les formats, les libellés ou le style à appliquer à un élément du tableau. En l absence d éléments en ligne dans l instruction TABLE, tout le tableau est organisé en colonnes. En présence d au moins une variable de calcul (citée dans VAR) et en l absence de statistique, des sommes sont calculées par défaut. Exemple : Dans le tableau suivant, les variables ANNEE et SEXE sont des variables de l instruction CLASS : chacune de leurs valeurs constitue une ligne ou une colonne du tableau. La variable REVENU_BRUT est citée, elle, dans l instruction VAR, car on calcule des statistiques (minimum, moyenne) sur ses valeurs. SEXE Ensemble F H ANNEE Revenu brut Revenu brut Revenu brut Revenu brut MINIMUM MOYENNE MINIMUM MOYENNE 72
73 Structures de tableaux possibles (lignes ou colonnes) Juxtaposition (A B) Imbrication (A * B) En lignes A A B B B B A B En colonnes B B B La dernière partie de l instruction TABLE concerne les calculs à effectuer. L écriture générale est de la forme nomvariabledecalcul*statistique, où la variable de calcul a son nom cité dans l instruction VAR et la statistique est l une des suivantes : N Nombre total d observations ; PCTN, ROWPCTN, COLPCTN Pourcentages d un nombre d observations (pourcentage de l ensemble, pourcentageligne et pourcentage-colonne respectivement) ; SUM, MEAN STD, MAX, MIN, RANGE, MEDIAN, Q1, Q3, P1, P5, P10, P90, P95, P99 Somme, moyenne, écart-type, maximum, minimum, étendue, médiane, quartiles, centiles ; NMISS Nombre d observations manquantes de la variable de calcul ; PCTSUM, ROWPCTSUM, COLPCTSUM Pourcentage de la somme d une variable de calcul (respectivement pourcentage du total, pourcentage du total-ligne et pourcentage du total-colonne). Il est possible d effectuer, avec cette instruction TABLE, des factorisations ou mises en commun : par exemple, au lieu d écrire VAR1*SUM VAR2*SUM, on pourra écrire (VAR1 VAR2)*SUM pour un résultat semblable. Pour changer l intitulé d une case du tableau, qu il corresponde au nom ou au label d une variable ou à un mot-clé (ALL ou une statistique), il suffit d ajouter à côté de l élément concerné="texte de remplacement". Exemple : répartition d une variable qualitative entre ses différentes modalités. proc tabulate data=pays.russet; class Demo; table (Demo ALL="Tous")*(N="Effectif" PCTN="%"); Les statistiques affichées dans les cellules sont les effectifs (N) et les pourcentages (PCTN). Le mot-clé ALL crée une colonne récapitulative : il s agit ici du total des effectifs. 73
74 Pour obtenir le tableau transposé du précédent, on remplace l instruction TABLE précédente par l instruction : table (Demo ALL="Tous"),(N="Effectif" PCTN="%"); Exemple : tableau de synthèse d une variable quantitative. On utilise l instruction VAR pour lister les variables d analyse. On peut en outre utiliser une instruction CLASS pour faire des statistiques par groupe. proc tabulate data=pays.russet; class Demo; var Gini; table (Demo ALL="Tous"),Gini*MEAN="Moyenne"; Exemple : tableaux croisés de deux variables qualitatives. Ces deux variables doivent être spécifiées dans une instruction CLASS. Cet exemple génère, à partir de la table chien, un tableau croisé de la variable affection en lignes avec la variable agressivité en colonnes. Les statistiques sont les effectifs (N) et les pourcentages (PCTN). L utilisation du mot ALL à la suite des deux variables du tableau donne un total en ligne et un autre en colonne. proc tabulate data=chien; class affection agressivite; table (affection ALL="Total"), (agressivite ALL="Total")* (N PCTN); 74
75 Exemple avec l instruction FORMAT et pourcentage lignes. On peut réaliser plusieurs variantes du tableau précédent en jouant sur les options de la procédure TABULATE et sur les éléments de l instruction TABLE. proc tabulate data=chien format=4.1; class affection agressivite; table affection, agressivite* ROWPCTN="%"; Avec l option FORMAT, le format d affichage par défaut du contenu de toutes les cellules du tableau est modifié : on passe de deux décimales à une seule. Avec le mot-clé ROWPCTN, on obtient dans les cellules les pourcentages-lignes. De manière similaire, on pourrait obtenir un tableau avec des pourcentages colonnes. Il suffirait d utiliser l instruction TABLE suivante : table affection, agressivite* COLPCTN="%"; Il est possible de mettre en forme les tableaux obtenus par cette procédure à l aide des options STYLE, que nous ne détaillerons pas ici La procédure FREQ : analyser la distribution de variables qualitatives Cette procédure est à la fois : une procédure descriptive dans le sens où elle produit des tableaux de fréquences unidimensionnelles ou des tris croisés multidimensionnels. Elle permet de calculer les effectifs et les fréquences de chaque valeur prise par une variable ; une procédure statistique permettant de faire certains tests comme le test du chi2. Syntaxe : PROC FREQ DATA=tableSAS ORDER=ordreValeurs <liste d options> ; BY liste_de_variables ; TABLES requête </liste d options> ; WEIGHT variable ; RUN ; Instruction TABLES TABLES permet de définir la liste des distributions souhaitées. Plusieurs distributions peuvent être demandées simultanément, chacune pouvant être unidimensionnelle ou multidimensionnelle. Dans le cas de demande de plusieurs distributions simultanées, il suffit de séparer chaque distribution par un espace. Par exemple, TABLES a b correspond à la demande de la distribution simple de la variable a, puis celle de la variable b. Si on veut croiser plusieurs variables entre elles, il suffit de les séparer par des astérisques. Par exemple, TABLE a*b correspond à la demande de tri croisé, affichant une modalité de a à chaque ligne et une modalité de b à chaque colonne. 75
76 On peut utiliser les facilités d écriture résumées sur les exemples suivants : a*(b c) correspond à a*b a*c (a b)*(c d) correspond à a*c b*c a*d b*d (a b c)*d correspond à a*d b*d c*d a - - c correspond a b c (a - - c)*d correspond à a*d b*d c*d. Exemple : dans l étude de la relation herbivores-environnement, on veut croiser la densité au km_ des éléphants et la proximité de l eau : proc freq data=parc; tables A*EAU; Pour une table unidimensionnelle, PROC FREQ calcule : l effectif l effectif cumulé le pourcentage le pourcentage cumulé. Pour une table multidimensionnelle, PROC FREQ calcule : le pourcentage ligne le pourcentage colonne le pourcentage total l effectif. Option ORDER L instruction ORDER= permet de spécifier l ordre dans lequel SAS devra éditer les valeurs des variables en lignes dans les tableaux produits par la procédure FREQ : ORDER=DATA pour éditer les valeurs dans l ordre d apparition dans la table ; ORDER=FORMATTED pour éditer les valeurs dans l ordre croissant du format d affichage ; ORDER=FREQ pour éditer les valeurs dans l ordre de leurs fréquences décroissantes ; ORDER=INTERNAL pour éditer les valeurs dans l ordre croissant des valeurs non formatées. C est l ordre utilisé par défaut. Exemple : proc freq data=voiture order=internal; table origine*finition; 76
77 Extrait de la table obtenue : The FREQ Procedure Table of Origine by Finition Origine(Origine) Finition(Finition) Frequency Percent Row Pct Col Pct B M TB Total ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ D ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ F ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ GB ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Total (Continued) On aurait obtenu le même résultat avec ORDER=FORMATTED puisqu on n a pas utilisé l option format. Exercice 10 : utilisation d un format d affichage Editez la répartition des voitures en fonction de l origine et de la finition, en ayant préalablement regroupé les voitures européennes dans une seule catégorie Europe, et les autres voitures dans la catégorie Autres (utiliser une procédure Format, puis une instruction format dans la procédure Freq). Le listing obtenu sera le suivant : The FREQ Procedure Table of Origine by Finition Origine(Origine) Finition(Finition) Frequency Percent Row Pct Col Pct B M TB Total ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Europe ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Autres ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Total
78 Exercice 11 : utiliser une option ORDER pour obtenir la sortie ci-dessous : The FREQ Procedure Table of Origine by Finition Origine(Origine) Finition(Finition) Frequency Percent Row Pct Col Pct B M TB Total ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Autres ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Europe ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Total Options principales de l instruction TABLES Concernant les distributions croisées : NOCOL : supprime l impression des pourcentages colonne NOROW : supprime l impression des pourcentages lige NOFREQ : supprime l impression des fréquences croisées NOPERCENT : supprime l impression des pourcentages croisés NOCUM : supprime l impression des fréquences et des pourcentages cumulés CUMCOL : imprime les pourcentages colonne cumulés. Concernant les distributions à dimension >2 : TOTPCT : affiche les pourcentages totaux par rapport à l ensemble de la distribution, et non plus par rapport aux critères page. Concernant l aspect général du tableau de sortie : NOPRINT : supprime l impression des tables mais permet l impression de statistiques OUT= : stocke les résultats de la demande dans la table SAS MISSING : traite les valeurs manquantes comme des modalités renseignées dans les calculs et tous les tableaux. MISSPRINT : permet d éditer les valeurs manquantes dans les tableaux demandés dans l instruction TABLE, mais elles ne sont pas prise en compte dans les calculs statistiques effectués par la procédure. Concernant le calcul des valeurs attendues par rapport aux valeurs observées : EXPECTED : imprime les fréquences attendues sous l hypothèse d indépendance DEVIATION : édite les écarts entre les effectifs observés et théoriques LIST : imprime des tables de dimension 2 sous forme de liste plutôt que de tableaux CELLCHI2 : imprime la contribution de chaque case à la statistique du chi2 totale CHISQ : calcule le test du chi2 d homogénéité ou d indépendance de chaque strate et calcule les mesures associées au chi2. D autres options non détaillées ici permettent de calculer d autres statistiques. Résultat en «liste» 78
79 L option LIST édite les tableaux croisés demandés dans l instruction TABLE sous forme de liste. Cette option n est pas valide si des indicateurs de liaison (options EXPECTED, DEVIATION) sont demandés. L option SPARSE permet d obtenir toutes les combinaisons possibles des modalités des variables, même celles d effectifs nul dans le cas où l on demande un affichage du tableau sous forme de liste (option LIST). Exemple proc freq data=voiture order=internal; table origine*finition/list sparse; The FREQ Procedure Cumulative Cumulativ Origine Finition Frequency Percent Frequency Percent ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ D B D M D TB F B F M F TB GB B GB M GB TB I B I M I TB J B J M J TB U B U M U TB En l absence de l option SPARSE, les lignes correspondant aux sous-groupes d effectif nul (ex. : voitures allemandes notées M) n auraient pas été listées. Stockage du résultat dans une table SAS Syntaxe TABLES requête / OUT=nom_de_table OUTPCT ; Les résultats de la procédure peuvent être stockés dans une table SAS. La table en sortie contiendra une observation par croisement des modalités des différentes variables. Les variables présentes dans cette table, outre les variables origine de la demande TABLES sont : COUNT, l effectif et PERCENT, le pourcentage par rapport à l ensemble des observations. De plus, si l option OUTPCT est activée, les variables suivantes sont conservées : PCT_COL : pourcentage colonne PCT_ROW : pourcentage ligne PCT_TABL : pourcentage par rapport à l ensemble de la table de dimension 2 (cas des tables de dimension>2). De la même manière l option OUTEXPECT permet d inclure les effectifs théoriques. En outre, si une instruction BY est activée, les variables correspondantes seront ajoutées à la table de sortie. Tous les autres éléments obtenus par une PROC FREQ, notamment tous les indicateurs statistiques peuvent être sauvegardés dans une autre table SAS, par l adjonction d une autre instruction : OUTPUT OUT=nom_de_table <liste_de_statistiques_à_sauvegarder> ; 79
80 Les test d indépendance L utilisation de l option CHISQ permet de réaliser des tests d indépendance. L hypothèse nulle testée est l indépendance de deux variables. Exemple : on va tester l indépendance de l origine des voitures et la qualité de la finition. proc format; value $ note 'B','TB'='B-TB' ; proc freq data=voiture order=internal; table origine*finition/chisq; format finition $note.; The FREQ Procedure Statistics for Table of Origine by Finition Statistic DF Value Prob ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ Chi-Square Likelihood Ratio Chi-Square Mantel-Haenszel Chi-Square Phi Coefficient Contingency Coefficient Cramer's V WARNING: 100% of the cells have expected counts less than 5. Chi-Square may not be a valid test. Sample Size = 18 On a effectué l analyse sur un échantillon très petit, aussi le test du Chi-2 n est pas très fiable. Cette réserve mise à part, le test du Chi-2 montre une probabilité d accepter l hypothèse d indépendance des deux variables de 15% (0,1545), ce qui est assez faible : on peut rejeter cette hypothèse. Cette conclusion est corroborée par les valeurs des trois derniers coefficients, phi, contingence et V de Cramer : pour ce dernier, par exemple, la liaison observée correspond à 67% à une liaison parfaite entre les deux variables La procédure MEANS : analyser la distribution de variables quantitatives (calcul de statistiques simples) PROC MEANS permet d analyser la distribution d une variable numérique sur une population donnée. Cette procédure pourra notamment servir à : calculer la somme de la variable ; calculer la moyenne et la médiane ; calculer l écart-type, l étendue et l intervalle inter quantiles (caractéristiques de dispersion) ; étudier la répartition de la variable (médiane, quartiles d ordre 1 et 3, centiles d ordre 1, 5, 10, 25, 50, 75, 90, 95, 99) ; étudier la forme de la distribution (coefficients d aplatissement et d asymétrie) ; identifier les valeurs extrêmes de la variable. 80
81 Syntaxe : PROC MEANS <DATA=nom_de_table STAT1 STATm <liste d options> ; CLASS liste_de_variables ; VAR liste_de_variables_numériques ; BY liste_de_variables ; FREQ variable ; WEIGHT variable ; ID variable; OUTPUT OUT=nom_de_table; Seule l instruction VAR est obligatoire. Si on ne précise aucune option ni instruction spécifique, la procédure MEANS va calculer par défaut, pour chaque variable numérique : le nombre d observations renseignées (N) ; la moyenne (Mean) ; l écart-type (Std Dev) ; le minimum ; le maximum. Sinon, on précise sur la première ligne (STAT1 STATm) les statistiques descriptives à calculer. Exemple : comparaison des sorties obtenues avec CLASS et BY, lorsque l on veut calculer la moyenne du PNB par tête des pays en fonction du régime politique. Avec l instruction CLASS : proc means data=pays.russet mean; var gnpr; class demo; The MEANS Procedure Analysis Variable : Gnpr Nb Demo obs. Moyenne ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ Avec l instruction BY : proc sort data=pays.russet; by demo; proc means mean; var gnpr; by demo; 81
82 Demo= The MEANS Procedure Analysis Variable : Gnpr Moyenne ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ Demo= Analysis Variable : Gnpr Moyenne ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ Demo= Analysis Variable : Gnpr Moyenne ƒƒƒƒƒƒƒƒƒƒƒƒ ƒƒƒƒƒƒƒƒƒƒƒƒ Choix de croisements des variables de classes La présence de l instruction CLASS avec plusieurs variables construit des groupes correspondant au croisement de toutes les variables citées dans cette instruction. Avec l instruction TYPES, on peut préciser les croisements voulus. Les combinaisons se spécifient avec le nom d une variable de l instruction CLASS, éventuellement séparée de celle avec laquelle elle est croisée par un astérisque (*). Le niveau le plus agrégé, n utilisant aucune variable de l instruction CLASS, se note (). Exemple : on souhaite obtenir la moyenne des cylindrées et de la puissance de 18 voitures sur les deux combinaisons origine*tranche_de_prix et origine*finition. proc means data=voiture mean; class origine finition tranche_prix; types origine*finition origine*tranche_prix (); var cylindree puissance; The MEANS Procedure N Obs Variable Mean ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 18 Cylindree Puissance ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 82
83 N Origine Tranche_prix Obs Variable Mean ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ D 1 1 Cylindree Puissance Cylindree Puissance F 1 4 Cylindree Puissance Cylindree Puissance GB 2 1 Cylindree Puissance I 1 1 Cylindree Puissance Cylindree Puissance J 1 2 Cylindree Puissance Cylindree Puissance U 1 1 Cylindree Puissance ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ N Origine Finition Obs Variable Mean ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ D B 2 Cylindree Puissance TB 1 Cylindree Puissance F B 2 Cylindree Puissance M 2 Cylindree Puissance TB 2 Cylindree Puissance GB B 1 Cylindree Puissance I B 2 Cylindree Puissance ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 83
84 Le traitement des valeurs manquantes Les valeurs manquantes d une variable d analyse sont toujours exclues des calculs. Concernant les variables de classes, les observations ayant des valeurs manquantes sont gardées dans l analyse si l on utilise l instruction BY. Si l on utilise CLASS, SAS ne prend pas en compte par défaut le groupe constitué des valeurs manquantes de la variable de classe ; l option MISSING dans l instruction PROC MEANS permet de considérer que dans une variable de l instruction CLASS, la valeur manquante définit un groupe à part entière. Autres instructions VAR : BY : WEIGHT : OUTPUT : ID : Options DESCENDING : NOPRINT : IDMIN : VARDEF : DF : N : WDF : WEIGHT : ALPHA : variables (numériques) pour lesquelles on sollicite la procédure la procédure s exécute pour chaque groupe d observation variable de pondération permet de stocker les résultats dans une table la valeur maximum de la variable mentionnée, au niveau de chaque groupe défini par l instruction CLASS, sera conservée dans la table de sortie. inverse l ordre des observations dans la table en sortie empêche PROC MEANS de produire un état dans la fenêtre OUTPUT. pour retenir la valeur minimum de la variable ID au lieu de son maximum. diviseur calculé pour les variances et les covariances degrés de liberté (n-1) nombre d observations somme des poids 1 (variance corrigée estimateur non biaisé) somme des poids. seuil pour les intervalles de confiance. PROC MEANS peut également calculer d autres statistiques, parmi lesquelles : KURTOSIS : coefficient de KURTOSIS (compare la forme de la courbe de distribution des observations à celle de la loi normale : un coefficient positif indique une plus forte concentration des observations ; un coefficient négatif indique une courbe plus «aplatie»). PRT : probabilité de nullité de la moyenne (test de Student) RANGE : étendue SKEWNESS : coefficient de symétrie (indique sur les observations sont réparties équitablement autour de la moyenne (le coefficient est alors nul) ou si elles sont plutôt concentrées vers les valeurs les plus faibles (coefficient positif) ou vers les valeurs les plus élevées (coefficient négatif). SUM : somme T : valeur de Student VAR : variance La création d une table SAS de résultats Tous les résultats issus de la PROC MEANS peuvent être sauvegardés dans une table. Alors qu à l écran ne sont affichées que les statistiques au niveau le plus fin, toutes les statistiques au niveau agrégé sont conservées dans la table de sortie. Syntaxe : OUTPUT OUT=nom_de_table <statistiques_à_conserver> / <AUTONAME> OUT= : nom de la table créée Statistiques : statistiques à conserver. Il existe trois formes de demandes statistiques : statistique= calculera les statistiques décrites plus haut pour les variables précisées dans VAR= et donne les mêmes noms aux variables en sortie que les variables en entrée. Une seule statistique peut être sauvegardée par ce biais. 84
85 statistique=nom1 nomn calcule les statistiques sur toutes les variables de VAR mais les stocke sous un nom différent. Les noms de la liste sont attribués dans l ordre des variables de VAR. statistique(var1 varn)=nom1 nomn applique les statistiques à un sous-ensemble des variables de VAR. L option AUTONAME construit automatiquement les noms des variables. La table SAS créée par l instruction OUTPUT contient systématiquement deux variables : _TYPE_ et _FREQ_. _FREQ_ contient le nombre d observations renseignées ayant servi au calcul des statistiques énumérées à cette ligne de la table en sortie. La variable _TYPE_ représente le niveau auquel se trouve chaque information et permet de savoir si une variable est agrégée à ce niveau. Exemple dans le cas de 3 variables : CLASS A B C : A B C _TYPE_ niveau agrégé niveau agrégé niveau agrégé 0 niveau agrégé niveau agrégé niveau détaillé 1 niveau agrégé niveau détaillé niveau agrégé 2 niveau agrégé niveau détaillé niveau détaillé 3 niveau détaillé niveau agrégé niveau agrégé 4 niveau détaillé niveau agrégé niveau détaillé 5 niveau détaillé niveau détaillé niveau agrégé 6 niveau détaillé niveau détaillé niveau détaillé 7 Exemple : on calcule la moyenne et la variance des variables gini, famr et gnpr. proc means data=pays.russet noprint; class demo; var gini farm gnpr; output out=m_russet mean= var= / autoname; Exercice 12 : établissez la table m_russet suivante en créant les variables à partir de l instruction : statistique=nom1 nomn, puis de l instruction statistique(var1 varn)=nom1 nomn. On peut enfin combiner le choix du nom de certaines variables et l attribution automatique des noms. 85
86 Exemple proc means data=a.pays noprint; class demo; var gini farm gnpr; output out=m_russet mean= var(gini farm gnpr)=v_gini v_farm v_gnpr / autoname; La procédure UNIVARIATE : analyser la distribution de variables quantitatives (analyse en détail d une variable) Cette procédure calcule des statistiques simples sur des variables numériques. Plus complète que la procédure MEANS, elle fournit : des détails sur les valeurs extrêmes d une variable le calcul de n importe quel quantile de la distribution plus de tests : 2 tests pour l égalité de la moyenne à une constante donnée, 1 pour le même test avec la médiane, 4 pour la normalité de la distribution ; la création de graphiques pour étudier la distribution (box-plot, stem-and-leaf, histogrammes, courbes de densité). Syntaxe : VAR ID PROC UNIVARIATE DATA=nom_de_table_SAS <options> ; VAR liste_de_variables ; ID variable ; HISTOGRAM liste_de_variables / <options> ; PROBLPLOT liste_de_variables / <options> ; RUN ; spécifie les variables numériques à analyser. Si l instruction VAR est omise, toutes les variables numériques de la table en entrée sont analysées. variable d identification pour les 5 plus petites et 5 plus grandes valeurs en sortie. HISTOGRAM trace un histogramme pour les variables spécifiées. PROBPLOT trace la distribution des variables, en la comparant à une distribution théorique spécifiée par l utilisateur. La procédure UNIVARIATE fournit par défaut une large gamme de statistiques descriptives classées par thème. Exemple : proc univariate data=demography; var pop_1996; id country; 86
87 The UNIVARIATE Procedure Variable: Pop_1996 (Pop_1996) Moments N 150 Sum Weights 150 Mean Sum Observations Std Deviation Variance Skewness Kurtosis Uncorrected SS Corrected SS Coeff Variation Std Error Mean Le premier tableau, intitulé Moments donne plusieurs moments empiriques de la variable étudiée. On y reconnaît la somme, la moyenne, l écart-type, la variance ainsi que le coefficient de variation de la variable. Les coefficients de forme (skewness et kurtosis) sont également indiqués. Basic Statistical Measures Location Variability Mean Std Deviation Median Variance Mode Range 1231 Interquartile Range NOTE: The mode displayed is the smallest of 2 modes with a count of 4. Le deuxième tableau présente les statistiques descriptives les plus usuelles : à gauche, des indicateurs de tendance centrale (moyenne, médiane, mode) ; et à droite, des indicateurs de dispersion (écart-type, variance, étendue et intervalle inter-quartile). Tests for Location: Mu0=0 Test -Statistic p Value Student's t t Pr > t Sign M 75 Pr >= M <.0001 Signed Rank S Pr >= S <.0001 Le troisième tableau contient des éléments permettant de réaliser deux tests de nullité de la moyenne (Student : test de Student et Signed Rank : test des rangs signés de Wilcoxon) et un test de nullité de la médiane (Sign : test des signes). Dans la colonne de gauche, SAS édite les statistiques caractéristiques de chaque test, et à droite, les probabilités d accepter l hypothèse de nullité. Les trois probabilités (p Value) sont inférieures à 0,0001. On en conclut que la moyenne et la médiane des populations sont significativement non nulles (l intérêt d une telle information est limitée), car on peut rejeter l hypothèse de nullité avec une très forte probabilité (1-p value). Il est possible de remplacer la valeur MuO=0 prise par défaut pour ces tests par une valeur réelle quelconque grâce à l option Mu0=valeur. On écrirait par exemple : proc univariate data=demography MU0=38; var pop_1996; id country; 87
88 Quantiles (Definition 5) Quantile Estimate 100% Max % % % % Q % Median % Q % 2.3 5% 1.6 1% 1.1 0% Min 1.1 Le quatrième tableau fournit l estimation de plusieurs quantiles (quartiles, déciles et centiles) de la distribution de la variable étudiée. Extreme Observations Lowest Highest Value Country Obs Value Country Obs 1.1 Mauritius Brazil Guinea-Bissau Indonesia Gambia U.S.A Gabon India Trinidad China 15 Le cinquième tableau fournit une liste qui permet d identifier les 10 observations extrêmes de la variable étudiée. Quelques précisions sur le premier tableau N Mean Std Deviation Skewness nombre d observations moyenne écart-type coefficient d asymétrie Si le coefficient d asymétrie est proche de 0, la distribution est symétrique. Si le coefficient d asymétrie est supérieur à 0, les observations sont concentrées à gauche (la moyenne est inférieure à la médiane). On a un histogramme de la forme : F r e q u e n c y 100 Si le coefficient d asymétrie est inférieur à 0, les observations sont concentrées à droite (la moyenne est supérieure à la médiane). On a un histogramme de la forme : 50 88
89 Uncorrected SS Coeff variation Kurtosis Corrected SS Std Error Mean F r e q u e n c y 40 Si le coefficient est inférieur à -1 ou supérieure à 1, on a une distribution très asymétrique. 20 Somme des carrés non corrigés : Σ x i _ (écart-type) / moyenne Permet de comparer l étalement d une distribution par rapport à la loi normale. Le coefficient est proche de 0 si on a une distribution proche de la loi normale. Si la distribution est plus concentrée autour de la moyenne, le coefficient est négatif. Si la distribution est plus étalée, le coefficient est positif. Somme des carrés corrigés : Σ (x i m)_ (écart-type) / (n) Quelques précisions sur le deuxième tableau Mode Range Interquartile range 0 Valeur la plus fréquente. Si on ne retrouve pas plusieurs fois la même valeur, on prend la plus petite. Différence entre la plus grande et la plus petite valeur Différence entre Q3 et Q1 (dans l exemple ci-dessous, Q3-Q1=41) Life_expect_1 Option PLOT SI on précise l option plot, on obtient 3 sortes de graphiques : un diagramme stem-and-leaf, une boîte à moustaches (box and wilker plot), et un diagramme de normalité (normal probability plot). Le diagramme stem-and-leaf Il s agit d un histogramme qui fournit certaines informations sur les valeurs numériques des données. Par exemple, supposons qu on ait les valeurs suivantes :
90 On va obtenir le diagramme suivant : On a ainsi la forme de la distribution ainsi que les valeurs des données. Dans l exemple précédent, la première colonne correspond à la dizaine et les valeurs de la deuxième colonne à l unité. Le diagramme à moustaches Le diagramme à moustaches fournit des informations sur la variabilité des données et sur les valeurs extrêmes. Dans l exemple ci-dessus, la médiane est égale à 18,3. Q1 est égal à 8,8. 25% des observations prennent une valeur inférieure à Q1. Q3 est égal à 29,5. 75% des observations ont une valeur inférieure à Q3. L écart interquartile est égal à Q=Q3-Q1=20,7. La limite supérieure de la boîte à moustache est égale à Q3+1,5Q = 60,5. La limite inférieure de la boîte à moustache est égale à Q3-1,5Q = -22,2. On a donc deux valeurs «aberrantes» : 62,3 et 75,0. La courbe de normalité Exemple : on trace la courbe de normalité de la variable rent. proc univariate data=a.pays plot; var rent; id pays; probplot rent/normal (mu=est sigma=est color=blue w=1); Sorties partielles obtenues par l option PLOT : 90
91 Stem Leaf # Boxplot *-----* Multiply Stem.Leaf by 10**+1 Le premier graphique est le stem and leaf qui reprend la distribution des valeurs de la variable rent. Pour passer des valeurs du stem-and-leaf plot aux valeurs de l échantillon, il suffit de multiplier les valeurs du diagramme par 10 (10 1 ). Ainsi, une seule observation à une valeur de l ordre de 75. A la 6 ème ligne, on lit que 3 observations ont les valeurs respectives 53, 53 et 54. La boîte à moustache indique que la moyenne est supérieure à la médiane et que la distribution de cette variable est très étirée vers les valeurs basses. On obtient également la courbe de normalité suivante : The UNIVARIATE Procedure Variable: Rent Normal Probability Plot * * ** * ***++ +* ** +++ * ++***** **** **** ***** 2.5+ * * * **+* Les signes + indiquent les valeurs attendues d une distribution normale. Les astérisques représentent les valeurs observées. 91
92 Les courbes de normalité permettent de vérifier visuellement que les données suivent une distribution approximativement normale. L axe vertical représente les données réelles et l axe horizontal les percentiles attendus d une distribution normale. Les diagrammes suivants illustrent les courbes types que l on peut obtenir : 1. les données suivent une distribution normale 2. les données sont concentrées à gauche 3. les données sont concentrées à droite 4. la distribution est plus étalée qu une distribution normale 5. la distribution est plus concentrée qu une distribution normale. Avec l instruction PROBPLOT, on peut obtenir un graphique plus précis qui sera affiché dans une fenêtre graphique : Ce graphique met en évidence une concentration à gauche des observations. Avec PROBPLOT, on peut tracer avec SAS Graph une courbe qui compare les valeurs observées de la variable avec les percentiles d une distribution théorique spécifiée. Si on spécifie normal, on obtient le tracé d une ligne de référence correspondant à la distribution normale (estimée avec les paramètres mu moyenne - et sigma écart-type des valeurs observées). Dans l exemple précédent, cette ligne de référence est tracée en bleu avec une épaisseur de trait de 2. HISTOGRAM trace un histogramme avec SAS Graph, auquel on peut superposer la courbe de densité d une loi normale de mêmes moyenne et variance. 92
93 Test de normalité SAS permet de réaliser quatre tests de normalité d une distribution : les tests de Shapiro- Wilk, Kolmogorov-Smirnov, Cramer-von Mises et Anderson-Darling. La statistique de test de Shapiro-Wilk (W) est comprise entre 0 et 1 et une valeur faible conduit à rejeter l hypothèse de normalité. A l inverse, pour les statistiques des tests de Kolmogorov-Smirnov (D), Cramer-von Mises (W-sq) et Anderson-Darling (A-sq), une valeur élevée conduit à rejeter l hypothèse de normalité. Il est conseillé d interpréter les tests de Kolmogorov-Smirnov, Cramer-von Mises et Anderson-Darling lorsque le nombre d observations renseignées est supérieur à Pour obtenir les résultats des quatre tests de normalité, il suffit d utiliser l option NORMAL dans l instruction PROC UNIVARIATE. PROC UNIVARIATE DATA=tableSAS NORMAL ; VAR variable ; RUN ; La procédure CORR : calculer des coefficients de corrélation PROC CORR permet le calcul des coefficients de corrélation entre les variables (de PEARSON, de SPEARMAN, de KENDALL ou de HOEFFDING) et peut produire des matrices de produits croisés ainsi que des matrices de variance-covariance. PROC CORR calcule aussi des statistiques univariées simples et crée de nouveaux tableaux contenant ces statistiques univariées et les corrélations. Elle permet enfin de calculer des coefficients de corrélation partiels entre un couple de variables en éliminant l influence d une liste de variables. De plus, à partir de la version 9 de SAS, cette procédure peut produire des graphiques de type «nuages de points» sans nécessité d utiliser la procédure GPLOT. Syntaxe : PROC CORR DATA=nom_de_table <liste d options> ; BY liste_de_variables ; FREQ variable ; PARTIAL liste_de_variables ; VAR liste_de_variables ; WEIGHT variable ; WITH liste_de_variables ; BY : la procédure est exécutée pour chaque sous groupe. PARTIAL : permet de mesurer les corrélations partielles entre les combinaisons 2 à 2 d une liste de variables numériques (instruction VAR) en éliminant l influence des variables de l instruction PARTIAL. VAR : variables pour lesquelles les coefficients sont calculés. WITH : utilisé pour obtenir les corrélations uniquement pour certaines combinaisons de variables. Indiquer dans l instruction WITH les variables dont on veut les corrélations avec les variables de VAR. WEIGHT : variable de pondération. A utiliser uniquement pour le calcul du coefficient de Pearson. FREQ : spécifie la variable numérique dont la valeur représente la fréquence de l observation. Quelques options disponibles : KENDALL : sélection du type de corrélation KENDALL (pour les variables ordinales). PEARSON : sélection du type de corrélation PEARSON (par défaut) (pour les variables métriques). SPEARMAN : sélection du type de corrélation SPEARMAN (pour les variables ordinales). OUTP =: stockage des résultats dans un tableau de TYPE CORR. Il contient les moyennes, écarts-types, nombre d observations et corrélations. OUTS= : idem avec les corrélations de SPEARMAN. 93
94 OUTK : idem avec les corrélations de KENDALL. NOMISS : exclusion des observations à valeur manquante de tous les calculs. VARDEF : spécifie le diviseur utilisé pour les variances. COV : impression de la matrice de variances covariances. NOSIMPLE : supprime l édition des statistiques univariées. Exemple proc corr data=voiture; var cylindree puissance; 2 Variables: Cylindree Puissance The CORR Procedure Simple Statistics Variable N Mean Std Dev Sum Minimum Maximum Label Cylindree Cylindrée Puissance Puissance Pearson Correlation Coefficients, N = 18 Prob > r under H0: Rho=0 Cylindree Puissance Cylindree Cylindrée <.0001 Puissance Puissance <.0001 On a d abord la liste des variables d analyse, puis des statistiques descriptives usuelles pour chaque variable utilisée. Ensuite, SAS édite dans chaque case hors diagonale le coefficient de corrélation, et édite en dessous la probabilité de rejeter l hypothèse de nullité du coefficient de corrélation. Ici, la probabilité est inférieure à , on peut donc conclure sur l existence d une corrélation linéaire entre les deux variables La procédure TTEST : test de comparaison d échantillons Pour réaliser des tests d égalité de la variance et de la moyenne de deux échantillons, on peut utiliser la procédure TTEST. On peut obtenir des résultats comparables avec la procédure NPAR1WAY si l on travaille sur de petits échantillons, en utilisant alors des statistiques dites non-paramétriques. Syntaxe : PROC TTEST DATA=tableSAS ; VAR variable(s)numérique(s) ; CLASS variabledeclasse ; RUN ; La procédure TTEST va réaliser un test d égalité des moyennes de deux échantillons. L instruction VAR permet de citer les variables dont les moyennes seront comparées. L instruction CLASS permet de spécifier une variable dont les valeurs constituent les groupes d observations à comparer. Cette variable ne doit avoir que deux valeurs. 94
95 Exemple : on veut tester la différence des PIB (Gnpr) entre démocraties et dictatures : proc format; value $ regim '1','2'='Democratie' '3'='Dictature' ; proc ttest data=pays.russet; var gnpr; class demo; format demo $regim.; Les résultats commencent par des statistiques descriptives par groupe sur la variable gini. On y retrouve la moyenne avec un intervalle de confiance à 95% (LOWER CL et UPPER CL pour MEANS) et l écart-type (STD DEV) avec son intervalle de confiance, ainsi que le minimum, le maximum et l effectif de chaque groupe. The TTEST Procedure Statistics Lower CL Upper CL Lower CL Upper CL Variable Demo N Mean Mean Mean Std Dev Std Dev Std Dev Std Err Minimum Maximum Gnpr Democratie Gnpr Dictature Gnpr Diff (1-2) T-Tests Variable Method Variances DF t Value Pr > t Gnpr Pooled Equal <.0001 Gnpr Satterthwaite Unequal <.0001 Equality of Variances Variable Method Num DF Den DF F Value Pr > F Gnpr Folded F <.0001 La procédure TTEST fournit les résultats d un test d égalité des moyennes sous deux hypothèses : variances égales (equal) et variances différentes (unequal). La lecture des sorties commence par le dernier tableau, qui correspond à un test d égalité des variances. Si la colonne PR>F de ce tableau contient un nombre inférieur au risque accepté (généralement 5%), alors on rejette l hypothèse de variances égales, et on lira, dans l avantdernier tableau (intitulé T-Tests), la ligne UNEQUAL (c est notre cas). Si le nombre est supérieur à 0,05, alors la ligne à lire est EQUAL. Le seuil de significativité du test de Student d égalité des moyennes est inférieur à 1%. Au seuil 1%, les PIB ne sont pas significativement égaux en moyenne. 95
96 5. 8. La procédure STANDARD : réduction de variables quantitatives PROC STANDARD permet de réduire ou «standardiser» les variables quantitatives. Syntaxe : PROC STANDARD <liste d options> ; BY <descending> liste_de_variables ; VAR liste_de_variables ; WEIGHT variables ; BY : VAR : WEIGHT : suivi du nom d une variable qualitative indique que les statistiques sont calculées par groupe d observations ; la table doit être préalablement triée. variables standardisées et recopiées dans la table de sortie (instruction OUT=). Par défaut, toutes les variables numériques sont traitées. nom de la variable contenant les pondérations des observations La procédure TRANSPOSE : transposition des matrices PROC TRANSPOSE lit tout ou partie d une table SAS et la recopie après transposition : les lignes deviennent des colonnes et les colonnes des lignes. Une nouvelle variable _name_ contient alors, en sortie, les noms des variables transposées qui désignent maintenant les observations. Syntaxe : PROC TRANSPOSE<liste d options> ; VAR liste_de_variables ; COPY liste_de_variables ; BY liste_de_variables ; BY : une observation est créée pour chaque variable transposée et pour chaque groupe ; la variable de groupe est incluse en sortie mais non transposée. La table doit être préalablement triée. COPY : les variables de la liste sont recopiées dans la table de sortie sans transposition. VAR : les variables de la sliste sont transposées et recopiées dans la table de sortie ; par défaut, toutes les variables numériques sont traitées. Options principales : OUT = TABLE SAS spécifie le nom de la tables créée NAME = spécifie le nom de la variable créée qui contiendra les noms des anciennes variables pour désigner les observations (par défaut _name_). 96
97 La procédure IML : le langage matriciel SAS IML est un module spécialisé interprétant un langage de calcul matriciel. L objet de base de manipulation du langage est une matrice, un tableau bidimensionnel (nrow X ncolumn) de valeurs numériques ou de caractères. Une table SAS peut être lue dans une matrice ou, inversement, créée à partir d une matrice. SAS IML est une procédure SAS commençant par l instruction PROC IML et se terminant par QUIT Lire les colonnes d une table SAS et les mettre en matrice Syntaxe : Pour copier les variables var1 var2 varn dans la matrice X : PROC IML ; USE nom_de_table ; READ ALL VAR {var1 var2 varn} INTO X; QUIT; Pour copier toutes les variables dans la matrice X : PROC IML ; USE table SAS ; READ ALL VAR _ALL_ INTO X; QUIT; Créer une table SAS à partir d une matrice Syntaxe : Pour copier la matrice X dans une table SAS : PROC IML ; ; CREATE nom_de_table FROM matrice_x ; APPEND FROM matrice_x ; CLOSE nom_de_table ; QUIT; Définir un vecteur colonne ou une matrice Pour définir un vecteur colonne au cours d une procédure IML : X={1 2 3} ; Pour définir une matrice 2X3 : A = {2 1 9, 1 3 4} ; ou : A = {2 1 9, 1 3 4} Pour transposer une matrice X : Y=X` ; ou : Y=T(X) ; 97
98 Les fonctions matricielles La fonction j(n1,n2,val) peut être utilisée pour créer une matrice de n1 lignes et n2 colonnes dont tous les éléments prennent la valeur val : A=j(1,5,1) crée un vecteur ligne de 5 colonnes prenant la valeur 1. Pour créer la matrice identité, on utilise la fonction I : Ident=I(4) crée une matrice identité 4X4. La fonction DIAG permet de créer une matrice diagonale dont les éléments sont les termes diagonaux de la matrice argument. Les éléments hors de la diagonale sont nuls. La fonction VECDIAG permet de créer un vecteur dont les éléments sont les éléments diagonaux de la matrice argument. Le calcul des vecteurs et des valeurs propres d une matrice s effectue à partir des fonctions EIGVEC et EIGVAL. La fonction EIGVAL retourne le vecteur colonne des valeurs propres, triées dans leur ordre décroissant. La fonction EIGVEC retourne la matrice des vecteurs propres. La fonction TRACE retourne la trace de la matrice. La fonction DET calcule le déterminant d une matrice. L inverse d une matrice peut être utilisée à partir de la fonction INV : Y=INV(X) Le calcul d une puissance α d une matrice s effectue à partir de l opérateur ** : Y=X**α 98
99 Inversion des matrices Les résultats obtenus par la fonction INV ne sont pas toujours très stables. Ils ne le sont pas non plus lorsque l on calcule une puissance négative d une matrice. C est pourquoi il est préférable de procéder à la diagonalisation de la matrice X (X=ULU` => X α = UL α U`, avec _ négatif) selon les étapes ci-dessous : PROC IML ; USE nom_de_table1 ; READ ALL VAR {var1 var2 var3} INTO X ; L=DIAG(EIGVAL(X)) ; CREATE nom_de_table2 FROM L ; APPEND FROM L ; CLOSE L ; QUIT ; DATA nom_de_table2 ; SET nom_de_table2(keep=col1-col3) ; COL1=COL1**α ; COL2=COL2**α ; COL3=COL3**α ; RUN ; PROC IML; USE nom_de_table2; READ ALL VAR _ALL_ INTO Lα; USE nom_de_table1; READ ALL VAR {var1 var2 var3} INTO X; U=EIGVEC(X); Xα=U*Lα*U` ; QUIT; 99
100 Annexe 1 : formats disponibles sous SAS Character $ASCIIw. Converts native format character data to ASCII representation $BINARYw. $CHARw. $EBCDICw. $HEXw. $MSGCASEw. $OCTALw. $QUOTEw. $REVERJw. $REVERSw. $UPCASEw. $VARYINGw. $w. Converts character data to binary representation Writes standard character data Converts native format character data to EBCDIC representation Converts character data to hexadecimal representation Writes character data in uppercase when the MSGCASE system option is in effect Converts character data to octal representation Writes data values that are enclosed in double quotation marks Writes character data in reverse order and preserves blanks Writes character data in reverse order and left aligns Converts character data to uppercase Writes character data of varying length Writes standard character data DBCS $KANJIw. Adds shift-code data to DBCS data Date and Time $KANJIXw. DATEw. DATEAMPMw.d DATETIMEw.d DAYw. DDMMYYw. DDMMYYxw. DOWNAMEw. EURDFDDw. EURDFDEw. EURDFDNw. Removes shift code data from DBCS data Writes date values in the form ddmmmyy or ddmmmyyyy Writes datetime values in the form ddmmmyy:hh:mm:ss.ss with AM or PM Writes datetime values in the form ddmmmyy:hh:mm:ss.ss Writes date values as the day of the month Writes date values in the form ddmmyy or ddmmyyyy Writes date values in the form ddmmyy or ddmmyyyy with a specified separator Writes date values as the name of the day of the week Writes international date values in the form dd.mm.yy or dd.mm.yyyy Writes international date values in the form ddmmmyy or ddmmmyyyy Writes international date values as the day of the week 100
101 Date and Time EURDFDTw.d EURDFDWNw. EURDFMNw. EURDFMYw. EURDFWDXw. EURDFWKXw. HHMMw.d HOURw.d JULDAYw. JULIANw. MINGUOw. MMDDYYw. MMDDYYxw. MMSSw.d MMYYxw. MONNAMEw. MONTHw. MONYYw NENGOw. PDJULGw. PDJULIw. QTRw. QTRRw. TIMEw. TIMEAMPMw.d TODw.d Writes international datetime values in the form ddmmmyy:hh:mm:ss.ss or ddmmmyyyy hh:mm:ss.ss Writes international date values as the name of the day Writes international date values as the name of the month Writes international date values in the form mmmyy or mmmyyyy Writes international date values as the name of the month, the day, and the year in the form dd month-name yy (or yyyy ) Writes international date values as the name of the day and date in the form day-of-week, dd month-name yy (or yyyy) Writes time values as hours and minutes in the form hh:mm Writes time values as hours and decimal fractions of hours Writes date values as the Julian day of the year Writes date values as Julian dates in the form yyddd or yyyyddd Writes date values as Taiwanese dates in the form yyymmdd Writes date values in the form mmddyy or mmddyyyy Writes date values in the form mmddyy or mmddyyyy with a specified separator Writes time values as the number of minutes and seconds since midnight Writes date values as the month and the year and separates them with a character Writes date values as the name of the month Writes date values as the month of the year Writes date values as the month and the year in the form mmmyy or mmmyyyy Writes date values as Japanese dates in the form e.yymmdd Writes packed Julian date values in the hexadecimal format yyyydddf for IBM Writes packed Julian date values in the hexadecimal format ccyydddf for IBM Writes date values as the quarter of the year Writes date values as the quarter of the year in Roman numerals Writes time values as hours, minutes, and seconds in the form hh:mm:ss.ss Writes time values as hours, minutes, and seconds in the form hh:mm:ss.ss with AM or PM Writes the time portion of datetime values in the form hh:mm:ss.ss 101
102 Date and Time WEEKDATEw. WEEKDATXw. WEEKDAYw. WORDDATEw. WORDDATXw. YEARw. YYMMxw. YYMMDDw. YYMMDDxw. YYMONw. YYQxw. YYQRxw. Writes date values as the day of the week and the date in the form day-of-week, month-name dd, yy (or yyyy) Writes date values as day of week and date in the form day-ofweek, dd month-name yy (or yyyy) Writes date values as the day of the week Writes date values as the name of the month, the day, and the year in the form month-name dd, yyyy Writes date values as the day, the name of the month, and the year in the form dd month-name yyyy Writes date values as the year Writes date values as the year and month and separates them with a character Writes date values in the form yymmdd or yyyymmdd Writes date values in the form yymmdd or yyyymmdd with a specified separator Writes date values as the year and the month abbreviation Writes date values as the year and the quarter and separates them with a character Writes date values as the year and the quarter in Roman numerals and separates them with characters Numeric BESTw. SAS chooses the best notation BINARYw. COMMAw.d COMMAXw.d Dw.s DOLLARw.d DOLLARXw.d Ew. FLOATw.d FRACTw. HEXw. IBw.d IBRw.d Converts numeric values to binary representation Writes numeric values with commas and decimal points Writes numeric values with periods and commas Prints variables, possibly with a great range of values, lining up decimal places for values of similar magnitude Writes numeric values with dollar signs, commas, and decimal points Writes numeric values with dollar signs, periods, and commas Writes numeric values in scientific notation Generates a native single-precision, floating-point value by multiplying a number by 10 raised to the dth power Converts numeric values to fractions Converts real binary (floating-point) values to hexadecimal representation Writes native integer binary (fixed-point) values, including negative values Writes integer binary (fixed-point) values in Intel and DEC formats 102
103 Numeric IEEEw.d Generates an IEEE floating-point value by multiplying a number by 10 raised to the dth power NEGPARENw.d NUMXw.d OCTALw. PDw. PERCENTw.d PIBw.d PIBRw.d PKw.d PVALUEw.d RBw.d ROMANw. SSNw. S370FFw.d S370FIBw.d S370FIBUw.d S370FPDw. S370FPDUw. S370FPIBw.d S370FRBw.d S370FZDw.d S370FZDLw.d S370FZDSw.d S370FZDTw.d S370FZDUw.d w.d WORDFw. Writes negative numeric values in parentheses Writes numeric values with a comma in place of the decimal point Converts numeric values to octal representation Writes data in packed decimal format Writes numeric values as percentages Writes positive integer binary (fixed-point) values Writes positive integer binary (fixed-point) values in Intel and DEC formats Writes data in unsigned packed decimal format Writes p-values Writes real binary data (floating-point) in real binary format Writes numeric values as Roman numerals Writes Social Security numbers Writes native standard numeric data in IBM mainframe format Writes integer binary (fixed-point) values, including negative values, in IBM mainframe format Writes unsigned integer binary (fixed-point) values in IBM mainframe format Writes packed decimal data in IBM mainframe format Writes unsigned packed decimal data in IBM mainframe format Writes positive integer binary (fixed-point) values in IBM mainframe format Writes real binary (floating-point) data in IBM mainframe format Writes zoned decimal data in IBM mainframe format Writes zoned decimal leading sign data in IBM mainframe format Writes zoned decimal separate leading-sign data in IBM mainframe format Writes zoned decimal separate trailing-sign data in IBM mainframe format Writes unsigned zoned decimal data in IBM mainframe format Writes standard numeric data one digit per byte Writes numeric values as words with fractions that are shown numerically 103
104 Numeric WORDSw. Writes numeric values as words YENw.d Zw.d ZDw.d Writes numeric values with yen signs, commas, and decimal points Writes standard numeric data with leading 0s Writes numeric data in zoned decimal format 104
105 Annexe 2 : quelques procédures pour les statistiques Toutes ne sont pas rattachées au module SAS/STAT : PRINT, MEANS, SUMMARY, FREQ, CORR, UNIVARIATE sont dans SAS/Base, ARIMA, SPECTRA et FORECAST sont dans SAS/ETS, HPF dans le module SAS/HPF, IML dans le module SAS/IML, GPLOT, GCHART et GBARLINE sont dans SAS/GRAPH. Catégorie Statistique descriptive Tests statistiques Procédure Vu en cours / TP Rôle PRINT Cours / TP Liste les données avec des totaux et des sous-totaux. MEANS / SUMMARY Cours / TP Calcule des statistiques descriptives (moyenne, somme, min et max, écart-type ) sur un jeu de données, éventuellement par groupe d observations. SUMMARY est identique à MEANS, sauf qu elle ne produit, par défaut, aucun résultat dans la fenêtre Output. FREQ Cours / TP Fournit les répartitions d individus selon une ou deux variables qualitatives. TABULATE Cours / TP Propose les statistiques des procédures MEANS / SUMMARY et FREQ dans un tableau dont la mise en forme est plus aisément contrôlable. REPORT / Combine les possibilités des procédures PRINT et TABULATE. UNIVARIATE Cours / TP Reprend les sorties fournies par MEANS ou SUMMARY et ajoute d autres statistiques plus complètes, ainsi que des graphiques (histogramme, adéquation à une loi). FREQ Cours / TP Propose des tests de liaison entre deux variables qualitatives (chi-2, V de Cramer, tests exacts associés) ainsi que des tests de tendance (Cochran-Armitage). CORR Cours / TP Calcule des corrélations entre variables quantitatives et teste la nullité du coefficient de corrélation. UNIVARIATE Cours / TP Propose des tests de normalité et de nullité de la moyenne. TTEST / GLM Cours NPAR1WAY / Compare avec un test statistique les moyennes de groupes d observations. La procédure TTEST se limite à l étude de deux groupes, tandis que GLM permet les études à plusieurs groupes et propose davantage de tests. Cependant, l hypothèse statistique pour l utilisation de la procédure GLM (égalité des variances) est plus contraignante que pour TTEST. Dans les deux procédures, les tests sont paramétriques. Réalise des tests non-paramétriques de comparaison de moyennes à deux groupes ou davantage. 105
106 Analyse de la variance Graphiques GLM / ANOVA TP GLM /MIXED / Permet l étude de l impact de facteurs qualitatifs et quantitatifs contrôlés sur une donnée quantitative. La procédure GLM reprend et enrichit les fonctionnalités de la procédure ANOVA, plus ancienne. Cette dernière fournit des résultats plus rapidement dans le cas de plans d expérience équilibrés. Permet l étude de l impact de facteurs qualitatifs et quantitatifs contrôlés et non contrôlés sur une donnés quantitative. La procédure GLM contient une instruction RANDOM dont les fonctionnalités sont plus étendues dans la procédure MIXED, construite expressément pour ce type d analyse et plus récente. GCHART Cours Trace des histogrammes, des diagrammes en bâtons et des diagrammes circulaires. GPLOT Cours / TP Trace des nuages de points, des courbes et des nuages où les points sont de taille variable. GBARLINE / Superpose un histogramme et une courbe (procédure disponible à partir de la version 9). BOXPLOT / Trace des graphiques «boîtes à moustaches». Echantillonnage SURVEYSELECT / Tire des échantillons d observations à partir d une table SAS en proposant de nombreux modes d échantillonnage. RANK / Remplace les valeurs par leur rang (1 pour le minimum, 2 pour la 2 ème plus petite valeur, etc ) ce qui permet des analyses non-paramétriques. Centre (=rend la moyenne nulle) et réduit (=rend la variance égale à 1) une ou plusieurs variable STDIZE / quantitatives. Préparation des Construit des indicatrices (variables valant 0 ou 1) à partie de variables qualitatives. La procédure données TRANSREG / / TRANSREG construit des macro-variables contenant la liste des indicatrices créées, et gère GLMMOD mieux labels et formats que la procédure GLMMOD. Données manquantes KDE / STDIZE / MI / MIANALYZE / Complète la répartition des valeurs d une variable quantitative à l aide d un «noyau» nonparamétrique ; cela permet l édition d une courbe de densité lissée. Permet le remplacement de données manquantes par la moyenne, éventuellement par la moyenne du groupe d observations si l on utilise son instruction BY. Permettent de remplacer les valeurs manquantes par des valeurs simulées pour l analyse statistique. Ces deux procédures travaillent de pair (MI en amont de l analyse statistique, MIANALYZE en aval). 106
107 Régression Données «de survie» Analyses factorielles Typologies Modèles décisionnels Plans d expérience REG / GLM TP ROBUSTREG / PLS / GENMOD / CATMOD / Fournit les résultats de l estimation d un modèle de régression linéaire. On peut y étudier et y prédire les valeurs d une variable quantitative en fonction de variables quantitatives seulement (procédure REG), ou de variables de toutes natures (procédure GLM, plus récente). Effectue une régression robuste (=qui minimise l impact d individus atypiques) par diverses méthodes. Effectue une régression PLS (régression sur des facteurs pouvant traiter des données multicorrélées). Construit des modèles de régression sur des variables dont la distribution ne correspond pas à une loi normale (Gamma, Log-normale, Poisson, etc.). La procédure CATMOD ne traite que les cas de données qualitatives. CALIS / Construit des modèles à équations structurelles (variables latentes). LIFEREG / Construit un modèle de régression sur des données censurées à droite (appelées également données de survie). LIFETEST / Calcule des indicateurs usuels sur les données «de survie», dont la fonction de survie et le produit-limite de Kaplan-Meier. Construit un modèle de régression sur des données censurées à droite avec une hypothèse de PHREG / TPHREG / hasards proportionnels. La procédure TPHREG permet d intégrer des variables explicatives qualitatives au modèle. PRINCOMP TP Fournit les résultats et les aides à l interprétation d une analyse en composantes principales (ACP). CORRESP TP Fournit les résultats et les aides à l interprétation d une analyse des correspondances simple (AFC) ou multiple (ACM). FACTOR / Fournit les résultats et les aides à l interprétation de plusieurs méthodes d analyse factorielle. CLUSTER / Fournit les résultats et les aides à l interprétation d une classification ascendante hiérarchique. TREE / Fournit le dendogramme à l issue d une classification hiérarchique. FASTCLUST / LOGISTIC / CATMOD / Fournit les résultats et les aides à l interprétation d une classification par centres mobiles (Kmoyennes ou nuées dynamiques). Fournit les résultats de l estimation d un modèle de régression logistique, où une variable qualitative est expliquée par des variables quantitatives ou qualitatives. La procédure LOGISTIC reprend toutes les fonctionnalités de la procédure CATMOD, plus ancienne, et les enrichit de sorties plus orientées vers les modèles réellement décisionnels ou datamining. DISCRIM / Fournit les résultats et les aides à l interprétation d une analyse discriminante. STEPDISC / Choisit le modèle le plus approprié pour la constitution d une analyse discriminante. PLAN / Effectue des ventilations d individus dans des plans d expériences. 107
108 Séries temporelles Autres méthodes statistiques ARIMA / Effectue des ajustements de séries chronologiques et des prévisions à l aide du modèle ARIMA de Box et Jenkins. HPF / FORECAST / Propose la prévision de données quantitatives suite à l analyse d une série chronologique de valeurs par diverses méthodes. La procédure HPF apparaît avec la version 9 en reprenant de nombreuses fonctionnalités de la procédure FORECAST. SPECTRA / Conduit l analyse spectrale de données temporelles. IML Cours / TP Propose un langage matriciel très complet sachant traiter les tables SAS et produire des graphiques et des listings. D après : SAS Maîtriser SAS Base et SAS Macro Hélène Kontchou Kouomegni et Olivier Decourt Dunod. 108
MAÎTRISE DE L ENVIRONNEMENT WINDOWS VISTA
MAÎTRISE DE L ENVIRONNEMENT WINDOWS VISTA OBJECTIFS : manipuler les fenêtres et l environnement Windows, gérer ses fichiers et dossiers, lancer les applications bureautiques présentes sur son poste. PUBLIC
GUIDE Excel (version débutante) Version 2013
Table des matières GUIDE Excel (version débutante) Version 2013 1. Créer un nouveau document Excel... 3 2. Modifier un document Excel... 3 3. La fenêtre Excel... 4 4. Les rubans... 4 5. Saisir du texte
Avant-propos FICHES PRATIQUES EXERCICES DE PRISE EN MAIN CAS PRATIQUES
Avant-propos Conçu par des pédagogues expérimentés, son originalité est d être à la fois un manuel de formation et un manuel de référence complet présentant les bonnes pratiques d utilisation. FICHES PRATIQUES
Évaluation des compétences. Identification du contenu des évaluations. Septembre 2014
Identification du contenu des évaluations Septembre 2014 Tous droits réservés : Université de Montréal Direction des ressources humaines Table des matières Excel Base version 2010... 1 Excel intermédiaire
RACCOURCIS CLAVIERS. DEFINITION : Une «combinaison de touches» est un appui simultané sur plusieurs touches.
S Vous n aimez pas la souris Les raccourcis clavier sont là pour vous faciliter la vie! INTRODUCTION : Vous avez du mal à vous habituer à la manipulation de la souris Des solutions existent : les raccourcis
INITIATION AU LOGICIEL SAS
INITIATION AU LOGICIEL SAS (version 9.1.3 sous Windows) Hélène HAMISULTANE Bibliographie : Initiation au logiciel SAS(9) pour Windows, Coqué N. (juin 2006). www.agroparistech.fr/img/pdf/polysas.pdf SAS
Mon aide mémoire traitement de texte (Microsoft Word)
. Philippe Ratat Mon aide mémoire traitement de texte (Microsoft Word) Département Ressources, Technologies et Communication Décembre 2006. Sommaire PRÉSENTATION DU DOCUMENT 1 Objectif principal 1 Deux
EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version 1.0 30/11/05
EXCEL PERFECTIONNEMENT Version 1.0 30/11/05 SERVICE INFORMATIQUE TABLE DES MATIERES 1RAPPELS...3 1.1RACCOURCIS CLAVIER & SOURIS... 3 1.2NAVIGUER DANS UNE FEUILLE ET UN CLASSEUR... 3 1.3PERSONNALISER LA
Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2
éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........
La Clé informatique. Formation Excel XP Aide-mémoire
La Clé informatique Formation Excel XP Aide-mémoire Septembre 2005 Table des matières Qu est-ce que le logiciel Microsoft Excel?... 3 Classeur... 4 Cellule... 5 Barre d outil dans Excel...6 Fonctions habituelles
Débuter avec Excel. Excel 2007-2010
Débuter avec Excel Excel 2007-2010 Fabienne ROUX Conseils & Formation 10/04/2010 TABLE DES MATIÈRES LE RUBAN 4 LE CLASSEUR 4 RENOMMER LES FEUILLES DU CLASSEUR 4 SUPPRIMER DES FEUILLES D UN CLASSEUR 4 AJOUTER
Le cas «BOURSE» annexe
Le cas «BOURSE» Le cas BOURSE sera réalisé en liaison avec les fiches ressources n 1 à n 5. Objectifs pédagogiques : - se familiariser en douceur avec les manipulations de base (utilisation des icônes,
Le cas «BOURSE» annexe
Le cas «BOURSE» Le cas BOURSE sera réalisé en liaison avec les fiches ressources n 1 à n 5. Objectifs pédagogiques : - se familiariser en douceur avec les manipulations de base (utilisation des icônes,
Initiation à Excel. Frédéric Gava (MCF) [email protected]
Initiation à Excel Frédéric Gava (MCF) [email protected] LACL, bâtiment P2 du CMC, bureau 221 Université de Paris XII Val-de-Marne 61 avenue du Général de Gaulle 94010 Créteil cedex Plan de cette année
R01 Import de données
R01 Import de données A partir du package de base, R peut lire les données stockées dans des fichiers texte, à partir notamment des fonctions read.table, read.csv, read.delim, read.csv2, read.delim2, et
Note de cours. Introduction à Excel 2007
Note de cours Introduction à Excel 2007 par Armande Pinette Cégep du Vieux Montréal Excel 2007 Page: 2 de 47 Table des matières Comment aller chercher un document sur CVMVirtuel?... 8 Souris... 8 Clavier
Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B
Excel : Réalisation d un classeur Compta Saisir les étiquettes Renommer la première feuille Compta Laisser la première ligne vide et sur la deuxième ligne saisir les étiquettes Se placer sur A2 et saisir
Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.
Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite. Mots-clés : Niveau : Bases de données relationnelles, Open Office, champs, relations,
EXCEL TUTORIEL 2012/2013
EXCEL TUTORIEL 2012/2013 Excel est un tableur, c est-à-dire un logiciel de gestion de tableaux. Il permet de réaliser des calculs avec des valeurs numériques, mais aussi avec des dates et des textes. Ainsi
Traitement des données avec Microsoft EXCEL 2010
Traitement des données avec Microsoft EXCEL 2010 Vincent Jalby Septembre 2012 1 Saisie des données Les données collectées sont saisies dans une feuille Excel. Chaque ligne correspond à une observation
Cours Excel : les bases (bases, texte)
Cours Excel : les bases (bases, texte) La leçon 1 est une leçon de base qui vous permettra de débuter avec Excel, elle sera fort utile pour les prochaines leçons. Remarque : à chaque fois qu il est demandé
La place de SAS dans l'informatique décisionnelle
La place de SAS dans l'informatique décisionnelle Olivier Decourt ABS Technologies - Educasoft Formations La place de SAS dans l'informatique décisionnelle! L'historique de SAS! La mécanique! La carrosserie
KIELA CONSULTING. Microsoft Office Open Office Windows - Internet. Formation sur mesure
KIELA CONSULTING Microsoft Office Open Office Windows - Internet Formation sur mesure Bureautique L outil informatique et la bureautique sont devenus quasiment incontournables quelque soit votre métier
Business Intelligence
avec Excel, Power BI et Office 365 Téléchargement www.editions-eni.fr.fr Jean-Pierre GIRARDOT Table des matières 1 Avant-propos A. À qui s adresse ce livre?..................................................
1 CRÉER UN TABLEAU. IADE Outils et Méthodes de gestion de l information
TP Numéro 2 CRÉER ET MANIPULER DES TABLEAUX (Mise en forme, insertion, suppression, tri...) 1 CRÉER UN TABLEAU 1.1 Présentation Pour organiser et présenter des données sous forme d un tableau, Word propose
Manuel d utilisation du site web de l ONRN
Manuel d utilisation du site web de l ONRN Introduction Le but premier de ce document est d expliquer comment contribuer sur le site ONRN. Le site ONRN est un site dont le contenu est géré par un outil
VOCABULAIRE LIÉ AUX ORDINATEURS ET À INTERNET
VOCABULAIRE LIÉ AUX ORDINATEURS ET À INTERNET Brancher / débrancher l ordinateur de la prise Allumer / éteindre l ordinateur : pour allumer ou éteindre l ordinateur vous devez appuyer sur le bouton On/off
TD d économétrie appliquée : Introduction à STATA
Ecole normale supérieure (ENS) Département d économie TD d économétrie appliquée : Introduction à STATA Marianne Tenand [email protected] OBJECTIFS DU TD Découvrir le logiciel d économétrie STATA,
Table des matières A. Introduction... 4 B. Principes généraux... 5 C. Exemple de formule (à réaliser) :... 7 D. Exercice pour réaliser une facture
Excel 2007 -2- Avertissement Ce document accompagne le cours qui a été conçu spécialement pour les stagiaires des cours de Denis Belot. Le cours a été réalisé en réponse aux diverses questions posées par
FEN FICHE EMPLOIS NUISANCES
Version 4.8.2 Date mise à jour : 19 Février 2013 Auteur : LAFUMA Gilles Email : [email protected] Web : www.procarla.fr/soft Présentation : FEN FICHE EMPLOIS NUISANCES Le Logiciel FEN Fiche emploi nuisance
Création, analyse de questionnaires et d'entretiens pour Windows 2008, 7, 8 et MacOs 10
modalisa Création, analyse de questionnaires et d'entretiens pour Windows 2008, 7, 8 et MacOs 10 8 Fonctionnalités de mise en ligne de questionnaires Vous trouverez dans cet opuscule les informations nécessaires
Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons
Guide d'utilisation OpenOffice Calc AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons 1 Table des matières Fiche 1 : Présentation de l'interface...3 Fiche 2 : Créer un nouveau classeur...4
Créer et partager des fichiers
Créer et partager des fichiers Le rôle Services de fichiers... 246 Les autorisations de fichiers NTFS... 255 Recherche de comptes d utilisateurs et d ordinateurs dans Active Directory... 262 Délégation
Parcours FOAD Formation EXCEL 2010
Parcours FOAD Formation EXCEL 2010 PLATE-FORME E-LEARNING DELTA ANNEE SCOLAIRE 2013/2014 Pôle national de compétences FOAD Formation Ouverte et A Distance https://foad.orion.education.fr Livret de formation
Groupe Eyrolles, 2003, ISBN : 2-212-11317-X
Groupe Eyrolles, 2003, ISBN : 2-212-11317-X 3 Création de pages dynamiques courantes Dans le chapitre précédent, nous avons installé et configuré tous les éléments indispensables à la mise en œuvre d une
Guide de l utilisateur. Faites connaissance avec la nouvelle plateforme interactive de
Guide de l utilisateur Faites connaissance avec la nouvelle plateforme interactive de Chenelière Éducation est fière de vous présenter sa nouvelle plateforme i+ Interactif. Conçue selon vos besoins, notre
Utilisation du client de messagerie Thunderbird
Outlook express n existant plus sur les systèmes d exploitation sortis après Windows XP, nous préconisons désormais l utilisation du client de messagerie libre distribué gratuitement par la Fondation Mozilla.
RECOPLUS LOGICIEL DE GESTION DES RECOMMANDES NOTICE D UTILISATION DE RECOPLUS RESEAU. N de série
RECOPLUS LOGICIEL DE GESTION DES RECOMMANDES NOTICE D UTILISATION DE RECOPLUS RESEAU N de série Siège social 107, rue Henri Barbusse BP305-92111 CLICHY Cedex 1 Sommaire Description 1. Installation 2. Mise
Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS
Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS Mémento Ouvrir TI-Nspire CAS. Voici la barre d outils : L insertion d une page, d une activité, d une page où l application est choisie, pourra
TP1 - Prise en main de l environnement Unix.
Mise à niveau UNIX Licence Bio-informatique TP1 - Prise en main de l environnement Unix. Les sujets de TP sont disponibles à l adresse http://www.pps.jussieu.fr/~tasson/enseignement/bioinfo/ Les documents
Afin d accéder à votre messagerie personnelle, vous devez vous identifier par votre adresse mail et votre mot de passe :
1 CONNEXION A LA MESSAGERIE ZIMBRA PAR LE WEBMAIL Ecran de connexion à la messagerie Rendez vous dans un premier temps sur la page correspondant à votre espace webmail : http://webmailn.%votrenomdedomaine%
Access 2007 FF Access FR FR Base
ACCESS Basic Albertlaan 88 Avenue Albert Brussel B-1190 Bruxelles T +32 2 340 05 70 F +32 2 340 05 75 E-mail [email protected] Website www.keyjob-training.com BTW TVA BE 0425 439 228 Access 2007
Manuel de formation Spaceman 1 ère journée
Manuel de formation Spaceman 1 ère journée Table des Matières Présentation des barres d outils et des icônes...4 Présentation de l espace de travail...10 1 ère PARTIE : CONSTRUIRE LE MOBILIER...11 La gondole
COURS DE MS EXCEL 2010
COURS DE MS EXCEL 2010 Auteur: Jean Monseu Ce cours est publié par Mechelsesteenweg 102 2018 Anvers Copyright Jean Monseu CFD, Mechelsesteenweg 102, 2018 Anvers Tous droits réservés. Aucune partie de cette
Formation tableur niveau 1 (Excel 2013)
Formation tableur niveau 1 (Excel 2013) L objectif général de cette formation est de repérer les différents éléments de la fenêtre Excel, de réaliser et de mettre en forme un tableau simple en utilisant
Contenu Microsoft Windows 8.1
Contenu Microsoft Windows 8.1 MODULE 1 AVANT-PROPOS CLAVIER SOURIS TERMINOLOGIE Modifier l apparence de l écran d accueil Modifier l avatar du compte FERMER UNE SESSION WINDOWS Redémarrer l ordinateur
ESPACE COLLABORATIF SHAREPOINT
Conseil de l Europe Service des Technologies de l Information ESPACE COLLABORATIF SHAREPOINT DOSSIER D UTILISATEUR 1/33 Sommaire 1. Présentation de SharePoint... 3 1.1. Connexion... 4 2. Les listes...
Le langage C. Séance n 4
Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de
L export de SAS vers Excel expliqué à ma fille
L export de SAS vers Excel expliqué à ma fille SAS est un logiciel merveilleux, mais tous n y ont pas accès. Pour contenter la soif de données de vos collègues qui n auraient pas d autre outil à disposition,
Voyez clair dans vos finances avec AccèsD Affaires
h00 Voyez clair dans vos finances avec Description de la fonctionnalité Le relevé des opérations : vos transactions en temps réel Le détail de vos transactions peut être produit pour les 62 derniers jours.
Database Manager Guide de l utilisateur DMAN-FR-01/01/12
Database Manager Guide de l utilisateur DMAN-FR-01/01/12 Les informations contenues dans le présent manuel de documentation ne sont pas contractuelles et peuvent faire l objet de modifications sans préavis.
Une ergonomie intuitive
Une ergonomie intuitive Les solutions de la ligne PME offrent une interface de travail proche des usages quotidiens en informatique. Leur ergonomie intuitive facilite la prise en main du logiciel. Une
Formation. Module WEB 4.1. Support de cours
Formation Module WEB 4.1 Support de cours Rédacteur Date de rédaction F.CHEA 08/02/2012 Les informations contenues dans ce document pourront faire l'objet de modifications sans préavis Sauf mention contraire,
données en connaissance et en actions?
1 Partie 2 : Présentation de la plateforme SPSS Modeler : Comment transformer vos données en connaissance et en actions? SPSS Modeler : l atelier de data mining Large gamme de techniques d analyse (algorithmes)
INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX
TABLE DES MATIERES Livret Utilisateur Excel 2007 Niveau 2 INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX... 4 Les tableaux croisés dynamiques... 4 Création d un tableau croisé... 5 Comparer des
Sauvegarde et Restauration d un environnement SAS
Sauvegarde et Restauration d un environnement SAS 1 INTRODUCTION 3 1.1 OBJECTIFS 3 1.2 PERIMETRE 3 2 LA SAUVEGARDE 4 2.1 QUELQUES REGLES D ORGANISATION 4 2.2 DEFINIR LES BESOINS 5 2.3 LA SAUVEGARDE, ETAPE
Utilisation avancée de SugarCRM Version Professional 6.5
Utilisation avancée de SugarCRM Version Professional 6.5 Document : Utilisation_avancee_SugarCRM_6-5.docx Page : 1 / 32 Sommaire Préambule... 3 I. Les rapports... 4 1. Les principes du générateur de rapports...
OSIRIS/ Valorisation des données PORTAIL BO MANUEL UTILISATEUR
OSIRIS/ Valorisation des données PORTAIL BO MANUEL UTILISATEUR HISTORIQUE DES VERSIONS Vers. Date Rédacteur Objet de la modification 1.00 Juillet 2007 GTBO_AGRI Création du document 1.01 Février 2009 SAMOA
Avertissement : Nos logiciels évoluent rendant parfois les nouvelles versions incompatibles avec les anciennes.
ENVOI EN NOMBRE DE SMS La version SMS de Ditel vous permet d'envoyer vos SMS de façon automatique. L'importation de vos données se fait directement au format Excel Avertissement : Nos logiciels évoluent
Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction
PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés
REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE MINISTERE DE LA FORMATION PROFESSIONNELLE. Microsoft. Excel XP
IFP Birkhadem Alger Rue des trois frères Djillali 1 REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE MINISTERE DE LA FORMATION PROFESSIONNELLE INSTITUT DE LA FORMATION PROFESSIONNELLE DE BIRKHADEM Initiation
1. Introduction... 2. 2. Création d'une macro autonome... 2. 3. Exécuter la macro pas à pas... 5. 4. Modifier une macro... 5
1. Introduction... 2 2. Création d'une macro autonome... 2 3. Exécuter la macro pas à pas... 5 4. Modifier une macro... 5 5. Création d'une macro associée à un formulaire... 6 6. Exécuter des actions en
Créer le schéma relationnel d une base de données ACCESS
Utilisation du SGBD ACCESS Polycopié réalisé par Chihab Hanachi et Jean-Marc Thévenin Créer le schéma relationnel d une base de données ACCESS GENERALITES SUR ACCESS... 1 A PROPOS DE L UTILISATION D ACCESS...
MANUEL DE PROCÉDURE POUR LA MISE À JOUR DU SITE DE FIDAFRIQUE. Documentation utilisateur Octobre 2005
MANUEL DE PROCÉDURE POUR LA MISE À JOUR DU SITE DE FIDAFRIQUE Documentation utilisateur Octobre 2005 I. Principes 1.1 - Généralités Les personnes autorisées à intervenir sur le site sont enregistrées par
Séminaire d information MIGRATION WINDOWS 7 ET OFFICE 2010
Séminaire d information MIGRATION WINDOWS 7 ET OFFICE 2010 Pourquoi migrer vers Office 2010? Pour bénéficier d une meilleure ergonomie Pour faciliter les échanges avec l extérieur Pour profiter de la puissance
The Grid 2: Manuel d utilisation
The Grid 2: Manuel d utilisation Bienvenue dans The Grid 2 Merci d avoir choisi The Grid 2! Ce guide va vous apprendre tout ce que vous devez savoir à propos de The Grid 2. Il vous guidera pas à pas pour
Guide d usage pour Word 2007
Formation TIC Septembre 2012 [email protected] Guide d usage pour Word 2007 ETSUP 8 villa du Parc Montsouris 75014 PARIS SOMMAIRE Interface... 2 Organiser son espace de travail... 3 La barre d
BIRT (Business Intelligence and Reporting Tools)
BIRT (Business Intelligence and Reporting Tools) Introduction Cette publication a pour objectif de présenter l outil de reporting BIRT, dans le cadre de l unité de valeur «Data Warehouse et Outils Décisionnels»
Premiers Pas avec OneNote 2013
Premiers Pas avec OneNote 2 Présentation de OneNote 3 Ouverture du logiciel OneNote 4 Sous Windows 8 4 Sous Windows 7 4 Création de l espace de travail OneNote 5 Introduction 5 Présentation des différentes
INITIATION A EXCEL 2007. Année 2009 2010
Qwertyuiopasdfghjklzxcvbnmqwertyu iopavbnmqwertyuiopasdfghjklzxcvbn mqwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasdf ghjklzxcvbnmqwertyuiopasdfghjklzxc vbnmqwertyuiopasdfghjklzxcvbnmqw
Organiser le disque dur Dossiers Fichiers
Ce document contient des éléments empruntés aux pages d aide de Microsoft Organiser le disque dur Dossiers Fichiers Généralités La connaissance de la logique d organisation des données sur le disque dur
CAPTURE DES PROFESSIONNELS
CAPTURE DES PROFESSIONNELS 2 Téléchargement 3 Installation 8 Prise en main rapide 10 Lancement Recherche 14 Gestion des fichiers 23 Compare et Sépare 24 Fichiers annexes 2/ Le menu Utilitaires 32 Internet
Access. Apprenez exactement ce dont vous avez besoin Progressez à votre rythme Téléchargez les exercices. Joyce Cox et Joan Lambert
Access Microsoft 2010 Maîtrisez rapidement Access 2010 avec le livre officiel de Microsoft Press Apprenez exactement ce dont vous avez besoin Progressez à votre rythme Téléchargez les exercices Joyce Cox
Programme d Accès Communautaire / Atelier 4 Initiation à Microsoft Excel PLAN DE COURS 3 MICROSOFT EXCEL 4 LANCER EXCEL 4
TABLE DES MATIÈRES PLAN DE COURS 3 MICROSOFT EXCEL 4 LANCER EXCEL 4 LE COMPAGNON OFFICE 4 Masquage ou affichage du Compagnon Office 4 Sélection d un autre Compagnon 4 APPRIVOISER EXCEL 5 Exercice no 1
Table des matières L INTEGRATION DE SAS AVEC JMP. Les échanges de données entre SAS et JMP, en mode déconnecté. Dans JMP
L INTEGRATION DE SAS AVEC JMP Quelles sont les techniques possibles pour intégrer SAS avec JMP? Comment échanger des données entre SAS et JMP? Comment connecter JMP à SAS? Quels sont les apports d une
clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE
Cas Neptune hôtel Base de données et langage SQL Propriété Intitulé long Formation concernée Matière Notions Transversalité Présentation Description Neptune Hôtel. L interrogation d une base de données
Contenu Windows 8 MODULE 1 AVANT-PROPOS MODULE 2 INTRODUCTION À WINDOWS 8 MODULE 4 APPLICATIONS WINDOWS 8 PARTIE 1 MODULE 3 PARAMÈTRES DE WINDOWS 8
Contenu Windows 8 MODULE 1 AVANT-PROPOS CLAVIER SOURIS TERMINOLOGIE MODULE 2 INTRODUCTION À WINDOWS 8 SYSTÈME D EXPLOITATION WINDOWS 8 VERSIONS DE WINDOWS 8 ENVIRONNEMENT DE WINDOWS 8 ÉCRAN D ACCUEIL Démarrer
Guide de prise en main. Yourcegid SOLOS. Devis-Factures. 12/08/2013 Page 1 / 38
Yourcegid SOLOS Devis-Factures 12/08/2013 Page 1 / 38 Sommaire 1. YOURCEGID SOLOS DEVIS-FACTURES : AUTONOME, SIMPLE, INTUITIF ET PERSONNALISABLE 3 2. CENTRE D'AIDE ET SUPPORT... 5 3. ERGONOMIE... 6 Les
SUPPORT DE COURS ACCESS 2010
Qu est-ce qu Access? Access 2010 est un outil de déploiement et de conception d application de base de données que vous pouvez utiliser pour effectuer le suivi d informations importantes. Vous pouvez conserver
Écriture de journal. (Virement de dépense)
Écriture de journal (Virement de dépense) SERVICE DES FINANCES Équipe de formation PeopleSoft version 8.9 Août 2014 TABLES DES MATIERES AVERTISSEMENT... 3 INTRODUCTION... 4 RAISONS JUSTIFIANT LA CRÉATION
NETWORK & SOFTWARE ENGINEERING MANUEL D UTILISATEUR. Logiciel TIJARA. NETWORK AND SOFTWARE ENGINEERING Manuel d'utilisateur "TIJARA" 1
NETWORK & SOFTWARE ENGINEERING MANUEL D UTILISATEUR Logiciel TIJARA Manuel d'utilisateur "TIJARA" 1 SOMMAIRE Introduction Première partie Chapitre 1 : Installation et démarrage Chapitre 2 : Architecture
Business Intelligence avec Excel, Power BI et Office 365
Avant-propos A. À qui s adresse ce livre? 9 1. Pourquoi à chaque manager? 9 2. Pourquoi à tout informaticien impliqué dans des projets «BI» 9 B. Obtention des données sources 10 C. Objectif du livre 10
SOMMAIRE. 1. Préambule...2. 2. Le calendrier...2. 3. Trajectoire d un objet lancé...6. 4. Régression linéaire...9
SOMMAIRE 1. Préambule...2 2. Le calendrier...2 3. Trajectoire d un objet lancé...6 4. Régression linéaire...9 5. Calcul de commissions par tranches...12 6. Base de données...16 7. Valeur cible...19 ATTENTION
Cahier n o 6. Mon ordinateur. Fichiers et dossiers Sauvegarde et classement
Cahier n o 6 Mon ordinateur Fichiers et dossiers Sauvegarde et classement ISBN : 978-2-922881-10-3 2 Table des matières Fichiers et dossiers Sauvegarde et classement La sauvegarde 4 Enregistrer 4 De quelle
Système de Gestion Informatisée des. Exploitations Agricoles Irriguées avec Contrôle de l Eau
MINISTERE DE L AGRICULTURE DE L ELEVAGE ET DE LA PECHE DIRECTION DU GENIE RURAL PROJET DE RENFORCEMENT DES CAPACITES NATIONALES DE SUIVI DES RESSOURCES EN EAU AXE SUR LA GESTION DE L EAU AGRICOLE Système
Table des matières ENVIRONNEMENT
ENVIRONNEMENT Présentation de Windows 7.................13 Démarrer Windows 7......................15 Quitter.................................15 Les fenêtres..............................16 Généralités............................17
Comment créer des rapports de test professionnels sous LabVIEW? NIDays 2002
Comment créer des rapports de test professionnels sous LabVIEW? NIDays 2002 De nombreux utilisateurs rencontrant l équipe de National Instruments nous demandent comment générer un rapport complet à partir
SOMMAIRE. 1. Connexion à la messagerie Zimbra 4 1.1.Pré-requis 4 1.2.Ecran de connexion à la messagerie 4
Messagerie Zimbra version 7 Prise en main Nadège HARDY-VIDAL 2 septembre 20 SOMMAIRE. Connexion à la messagerie Zimbra 4..Pré-requis 4.2.Ecran de connexion à la messagerie 4 2. Présentation générale de
INTERWRITE Workspace
INTERWRITE Workspace Prêt à fonctionner 1. Allumer le tableau blanc (interrupteur sur le côté). 2. Allumer le vidéoprojecteur (voyant vert). 3. Brancher sur l ordinateur : le câble ou la clé bluetooth
Support de formation Notebook
Support de formation Notebook Guide de l utilisateur du tableau interactif SMART Board Table des matières Le Tableau Blanc Interactif... 1 Comprendre le fonctionnement du TBI... 1 Utiliser le plumier
SUGARCRM MODULE RAPPORTS
SUGARCRM MODULE RAPPORTS Référence document : SYNOLIA_Support_SugarCRM_Module_Rapports_v1.0.docx Version document : 1.0 Date version : 2 octobre 2012 Etat du document : En cours de rédaction Emetteur/Rédacteur
Cegid Business Line. Version 2008 Release 2. Service d'assistance Téléphonique 0 825 070 025
Fiche version Cegid Business Line Version 2008 Release 2 Service d'assistance Téléphonique 0 825 070 025 Sommaire Les nouveautés fonctionnelles version 2008 Release 2...3 Comptabilité... 3 Relevés bancaires...3
Manuel du gestionnaire
Manuel du gestionnaire ENT MESTEK v.2010 Ce manuel s adresse à l équipe administrative d un établissement scolaire : principal, principal adjoint, secrétaires dans un collège, proviseur, proviseur adjoint,
Les dates SAS expliquées à ma fille
Les dates SAS expliquées à ma fille Eternel sujet de questionnements, les dates SAS ont un fonctionnement qui a tout pour surprendre. Petite série d explications avant qu il vous prenne l envie de passer
ERETES-SERIES. Support de formation. Formation ERETES ERETES-SERIE 1/58
ERETES-SERIES Support de formation 2013 Formation ERETES ERETES-SERIE 1/58 1. Introduction... 4 2. La base de données «Serie»... 5 3. Les Interfaces... 11 4. Le Bloc-Notes... 14 5. La gestion des nomenclatures...
Saisissez le login et le mot de passe (attention aux minuscules et majuscules) qui vous ont
I Open Boutique Sommaire : I Open Boutique... 1 Onglet «Saisie des Produits»... 3 Création d'une nouvelle fiche boutique :... 3 Création d'une nouvelle fiche lieux de retraits :... 10 Création d'une nouvelle
hager Logiciel PC pour configurateur Radio Tebis TX 100 Manuel d utilisation 6T7266
hager Logiciel PC pour configurateur Radio Tebis TX 100 Manuel d utilisation 6T7266 Sommaire général Avant Propos...2 Vue Synthétique...3 1 Raccourcis clavier...3 2 Décomposition des écrans...3 3 Icônes...4
Installation de CPA STUDIO :
Installation de CPA STUDIO : Système d exploitation requis : Windows 98 2ème édition Windows XP service pack 2 Résolution écran - Nombre de couleurs : CPA STUDIO nécessite une résolution minimum d affichage
FICHIERS ET DOSSIERS
La différence entre fichier et dossier FICHIERS ET DOSSIERS La première notion à acquérir est la différence entre un dossier et un fichier Un dossier est une sorte de classeur dans lequel on range divers
