Premier contact avec SAS - Université de Montpellier
Transcription
Premier contact avec SAS - Université de Montpellier
Université de Montpellier 2 M2 MASS TP1 : Introduction au logiciel SAS Analyse statistique d’une variable Premier contact avec SAS 1. Lancez le logiciel sous Windows. Vous voyez apparaître les fenêtres Editor (Editeur), Output (Sortie), Log (Journal) et Explore (Explorateur). 2. Dans la fenêtre SAS : Program Editor, entrez le programme suivant : DATA TP1; /* creation d’une table provisoire */ INPUT Taille Poids Sexe $; CARDS; 174 65 M 169 56 F 166 48 F 181 80 M 168 53 F 176 76 M 190 77 M 159 70 F 162 60 F 164 51 F 160 73 F RUN; PROC PRINT; RUN; 3. Sauvegardez le fichier prog1.sas dans votre répertoire de travail. 4. Exécutez le programme : onglet run puis submit (soumettre) ou le petit bonhomme qui court. 5. On peut vérifier le contenu de la table créée TP1 dans la librairie Work (par défaut) en utilisant l’Explorateur. Remarques importantes – SAS ne différencie pas les majuscules et les minuscules. Par exemple, on peut écrire PRINT DATA=tp1 pour visualiser les données contenues dans la table TP1. – Ne pas oublier les ; à la fin chaque instruction. – En cas d’erreur après avoir exécuté le programme, TOUJOURS vérifier la fenêtre SAS : Log. – Le signe $ dans la déclaration des variables indique que la variable précédant le $ est de type chaîne de caractères (qualitative). – Dans un programme SAS, tout ce qu’on écrit entre /* ... */ ne sera pas pris en compte pen- dant l’exécution du programme. Ceci permet d’inclure de commentaires pour une meilleure compréhension du programme. – Sauvegardez toujours votre programme avant de le soumettre. Des petits trucs à savoir ... 6. Création d’une librairie de travail. Par défaut, les tables créées dans SAS sont enregistrées dans la librairie Work qui est vidée lorsque l’on quitte le logiciel. Pour conserver les données, il est recommandé de créer une librairie (un répertoire de travail personnel) qui sera conservée entre différentes sessions SAS. Pour cela il suffit de créer un répertoire mesTPSAS dans l’Explorateur. Pour que la table SAS TP1 du programme prog1.sas soit bien créée dans la librairie mesTPSAS, il faut ajouter une instruction dans le programme prog1.sas : LIBNAME mesTPSAS ’???/mesTPSAS’ ; où ??? désigne le chemin qui mène au répertoire mesTPSAS. Cette instruction n’est réalisée qu’une fois au début de la session. Pour indiquer à SAS que l’on souhaite enregistrer les données dans cette librarie il faut précéder le nom des tables par mesTPSAS. comme suit : la ligne DATA TP1 ; du programme prog1.sas deviendra alors DATA mesTPSAS.TP1 ; Si, au cours d’une session, le préfixe mesTPSAS est omis, les données seront enregistrées dans la librairie par défaut Work. 7. Il est souvent difficile de lire le rapport d’erreur qui apparait dans la fenêtre LOG lorsque les rapports d’erreur s’accumulent. Pour éviter ce problème, on peut simplement aller dans Edit > Clear All dans la fenêtre LOG. 8. Vous aurez sans doute remarqué le nombre grandissant de fenêtres. Pour retrouver rapidement vos fenêtres LOG, Editor et Output, les touches F. peuvent vous aider : F5= Editor, F6=LOG et F7=Output qui sont des raccourcis. Sinon, on peut toujours choisir dans le menu View > {Editor, Log, Output}. Lectures de données à partir d’un fichier externe Les données sont maintenant disponibles dans un fichier externe qui se nomme ici individus.txt. La première chose à faire est de bien identifier le type de fichier à lire (tabulaire ou délimité, et si c’est le cas, par quel délimiteur). Il faut aussi savoir quelles sont les données contenues et quels sont les formats associés. Ce fichier est extrait d’un tableur du type excel. Le fichier texte est d’un format particulier : Tab delimited file. Le programme suivant permet de lire le fichier externe individus.txt et de créer la table SAS tableindiv : DATA tableindiv; INFILE ’individus.txt’ DSD DLM=’09’x TRUNCOVER; INPUT prenom $ nom $ sexe $ anniversaire : DDMMYY10. age ville $10.; FORMAT sexe $1. anniversaire : DDMMYY10. age 2. ville $15.; RUN; PROC PRINT DATA = tableindiv; RUN; L’option DSD est là pour prévenir les données manquantes et l’option TRUNCOVER permet de lire des lignes non complètes sans passer automatiquement à la ligne suivante. Ici, Londres n’occupe pas 10 caractères, et sans TRUNCOVER, SAS serait tenté d’aller à la ligne suivante. Il est donc conseillé d’associer l’option TRUNCOVER à l’instruction INFILE. Manipulation de tables 9. Fusion verticale de tables La fusion verticale consiste à empiler les données de plusieurs tables SAS. Elle est réalisée dans une étape DATA avec l’instruction SET. Dans ce type de fusion, on a généralement des ensembles de données avec des variables communes. DATA tablefusv; SET TableLue1 TableLue2 ...tableLuen; RUN; Les données sont empilées dans la table résultante mais s’il existe des doublons dans les données, ils ne sont pas pour autant éliminés. On appelle doublon la répétition d’un individu avec les mêmes caractéristiques. Afin d’éliminer les doublons, il faut utiliser la procédure SORT avec l’option NODUPRECS. PROC SORT DATA=combine NODUPRECS; BY prenom age; RUN; PROC PRINT DATA=combine; RUN; 10. Fusion horizontale de tables Pour réaliser la fusion horizontale de tables SAS, ces tables doivent posséder au moins une variable commune qui servira à recoller les données. Attention, avant d’effectuer une fusion horizontale de plusieurs tables, les données de chaque table doivent être triées selon la (les) variable(s) de recollement. La procédure SORT permet de trier des tables : PROC SORT DATA = tablelue; BY Var1 Var2... Varp; RUN; La fusion horizontale est réalisée dans une étape DATA avec l’instruction MERGE. Il faut indiquer à SAS, avec l’instruction BY, quelles sont les variables de recollement. DATA tablefush; MERGE Tablelue1 Tablelue2; BY Var1 Var2... Varp; RUN; Par exemple, la fusion des tables table1 et table2 en une troisième table combine selon la variable de recollement prenom est obtenue avec le programme suivante : DATA table1; INPUT prenom $ age; DATALINES; Chris 36 Jane 21 Tom 30 Joe 49 ; RUN; PROC SORT DATA=table1; BY prenom; RUN; PROC SORT DATA=table2; BY prenom; RUN; DATA combine; DATA table2; INPUT prenom $ sexe $; DATALINES; Tom M Chris M Jane F Joe M ; RUN; MERGE table1 table2; BY prenom; RUN; PROC PRINT DATA=combine; RUN; Création et sélection de variables utiles On peut rajouter de nouvelles variables à l’intťerieur d’une étape DATA en les définissant directement, par exemple dans le code suivant : DATA Tablenouv; SET Tablelue; NouvelleVar = Var1 + Var2; RUN; Var1 et Var2 sont des variables de Tablelue et la table Tablenouv contient la variable NouvelleVar en plus de toutes les variables de Tablelue. Il est possible, au sein d’une étape DATA de supprimer certaines variables au moyen de l’option DROP = Var1. On peut aussi utiliser l’ption KEEP=Var1 ... VarN qui permet de ne garder que certaines des variables de la table. Par exemple, DATA Tablenouv ; SET Tablelue (KEEP = Var2); RUN; On peut aussi supprimer certaines observations à l’aide de l’instruction WHERE, comme l’illustre l’exemple suivant. La table Homme est construite à partir de la table Indiv en ne conservant que les individus de sexe masculin. DATA Indiv; INPUT prenom $ sexe $; DATALINES; Chris M Jane F Tom M Joe M ; RUN; DATA Homme; SET Indiv (WHERE = (sexe = ’M’)); RUN; PROC PRINT DATA = Indiv; RUN; PROC PRINT DATA = Homme; RUN; Exercice 1 Le tableau suivant donne le nom des dernières familles qui ont emménagé dans la Résidence des chênes. Ce tableau nous informe de leur date d’emménagement, du numéro de leur appartement, du nombre d’enfants dans cette famille et du département où ils vivaient précédemment. Famille Durant Martin Lefevre Dupont Barraux François Date d’arrivée 11/02/2005 18/12/2008 05/07/2006 30/05/2007 15/06/2006 19/09/2008 n o d’appart. 10 3 5 11 7 13 nb d’enfants 2 3 1 3 2 4 Ancien département Aube Haute-Marne Vosges Yonne Essonne Calvados 1. Créer une table Table1 contenant les informations excepté la date d’arrivée, pour les trois premières familles en entrant les données dans le programme. 2. Reprendre la question 1 en supposant que le nombre d’enfants pour la famille Martin et l’ancien département de la famille Durant sont inconnus. La table créée sera appelée Table1bis. 3. Créer la table Table2 contenant toutes les informations pour les trois premières familles. Vérifier son contenu grâce à l’instruction CONTENTS. De même, créer la table Table3 contenant toutes les informations pour les trois dernières familles. 4. Créer la table Tablefinale en fusionnant les tables Table2 et Table3. 5. Ces données sont disponibles dans le fichier externe nouveauxhabitants.txt. Construire la table Tablefinale2 en lisant les données dans le fichier externe (utiliser les informats) . Construire la table Tablefinale3 en donnant un label à chaque variable.