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.