SlideShare ist ein Scribd-Unternehmen logo
1 von 80
Downloaden Sie, um offline zu lesen
UNIVERSITE PARIS XII VAL DE MARNE



FACULTE DE SCIENCES ECONOMIQUES ET DE GESTION




                Master 2 Recherche

                Economie Appliquée




                    Le logiciel SAS
                         1ère partie



                       P. Blanchard
                  blanchard@univ-paris12.fr

                        ERUDITE
         http://www.univ-paris12.fr/www/labos/erudite




                     Septembre 2006
2




                                             Plan du cours

Partie I – Introduction à l’étape DATA et aux procédures
1) L'interface SAS sous Windows
2) Notre premier programme. Eléments du langage SAS.
3) Introduction à l’étape DATA
    • Création/modification d'un tableau SAS
    • Création et modification des variables
    • Sélection de variables
4) Introduction aux principales procédures
    • Les procédures utilitaires : PROC PRINT et PROC CONTENTS
    • Les procédures statistiques : PROC MEANS, PROC FREQ et PROC CORR
    • Les instructions BY/CLASS et la procédure PROC SORT
    • Les procédures graphiques : Proc GCHART, PROC GPLOT
    • Les procédures économétriques : PROC REG et PROC AUTOREG
5) Présentation du programme, de l’OUTPUT et du LOG


Partie II – Approfondissements sur l’étape DATA et les procédures
1) Approfondissements sur l’étape DATA
    • Création d'un tableau à partir d'un fichier externe au format ASCII ou EXCEL
    • Sélection des variables et des observations
    • Les instructions de totalisation
    • Les boucles sur les variables et sur les observations
    • Manipulation des variables chaîne de caractères. Les labels
    • Concaténation et fusion contrôlée de tableaux
2) Approfondissements les procédures
    • Importation et exportation d’un fichier au format XLS
    • La création de tableaux par une procédure
    • La procédure PROC FORMAT
    • PROC TABULATE

Annexes : Informats, Formats et fonctions




P. Blanchard – Logiciel SAS – Master 2 Recherche
3



Introduction

I) Informations pratiques


    P. Blanchard, bureau 218, tel: 01 41 78 46 49, email: blanchard@univ-paris12.fr

    Pré-requis à ce cours: Windows.

    Documentation SAS : officielle, INSEE, BDF, Internet…

    Bibliographie (par niveau croissant de difficulté).

        •     L. D. Delwiche & S. J. Slaughter, The Little SAS Book : A Primer, 2003, SAS Institute.
        •     E. Duguet, Introduction à SAS, Economica, 2004.
        •     R. Aster, Professional SAS Programming Shortcuts, Breakfast, 2002, 1st edition.

    Les fichiers de données et de programmes pour les exercices peuvent être téléchargés sur la
    page WEB:

            http://www.univ-paris12.fr/www/labos/erudite/membres/pb/etrie.html

    SAS (http://www.sas.com/france) propose une licence gratuite pour les étudiant(e)s
    suivant une formation SAS et organise aussi un Master’s club.. Il existe aussi une liste de
    discussion pour SAS LISTSERV@LISTSERV.UGA.EDU

    Cours/td : 18h + 4 td de 1.5h

    Questions/réponses




P. Blanchard – Logiciel SAS – Master 2 Recherche
4




FORMULAIRE LICENCE GRATUITE A DOMICILE « ETUDIANT »
                         Doit être complété par l’étudiant et remis à son professeur qui l’adressera au CRI Diffuseur


BENEFICIAIRE
fi Mme fi Mlle fi M.
Nom* :
Prénom* :
Adresse personnelle* :
Code Postal* :
Ville* :
Téléphone* :
E.mail* :
Date probable de fin d’études* :
Centres d’intérêt professionnels* :

ETABLISSEMENT
Nom* : Université Paris XII Val de Marne – Faculté de Sciences Economiques et de Gestion
Département/Filière* : Département d’Economie
Professeur(s) enseignant SAS* : Pierre Blanchard
Diplôme (intitulé)* : Master 2 Recherche
Logiciel(s) SAS enseigné(s)* : SAS 9.1
Adresse* : 61 avenue du Général de Gaulle
Code Postal* : 94010
Ville* : Créteil cédex

« Je suis étudiant à l’Université Paris XII val de Marne et SAS fait partie intégrante de mon cursus.
J’ai adhéré au Masters’ Club de l’Academic Program, en complétant le formulaire d’adhésion ou de
renouvellement sur http://www.sas.com/france/academic
Je m’engage à installer les logiciels SAS® sur mon ordinateur, situé à mon adresse personnelle, renseignée
ci-dessus, à n’utiliser les Logiciels que pour un usage personnel et pédagogique à but non lucratif, à
n’effectuer aucune copie desdits Logiciels et à ne jamais les utiliser dans un environnement professionnel
(ex. : stage).
Je reconnais que la société SAS Institute Inc., Cary, Caroline du Nord, USA, est propriétaire, au sens du
Code de la Propriété Intellectuelle, des Logiciels et de sa documentation.
Je suis informé qu’en cas d’atteinte avérée aux droits de propriété intellectuelle de SAS, j’encourre une
indemnité à payer à SAS de 1000 (mille) euros »
La licence gratuite est composée des Progiciels Base SAS®, SAS/ETS®, SAS/GRAPH®, SAS/STAT®,
SAS/IML®, SAS/INSIGHT®, SAS/Enterprise Guide®, SAS/QC® et SAS/ACCESS® TO PC FILE FORMATS
sur poste client Windows.

Date et Signature de l’étudiant :                                                                           Signature Professeur


CADRE RESERVE A SAS
Réf4 :
Site :
Date de Licence :

* Informations obligatoires

 * Les présentes informations sont nécessaires aux fins de permettre la mise à disposition du Progiciel à
 l'Utilisateur.
 Seul SAS est destinataire des informations que vous nous communiquez. Certaines informations peuvent
 ponctuellement être partagées avec nos partenaires. Conformément à la loi Informatique et Libertés du 6
 janvier 1978, vous disposez d'un droit d'accès, d'opposition et de modification sur les données qui vous




P. Blanchard – Logiciel SAS – Master 2 Recherche
5


 concernent. Pour l'exercer, n'hésitez pas à vous adresser à : Responsable CNIL - SAS Institute France -
 Domaine de Grégy - BP5 – F-77166 Grégy-sur-Yerres ou à envoyer un mail à acces_donnees@fra.sas.com.".




P. Blanchard – Logiciel SAS – Master 2 Recherche
6


II ) Les caractéristiques essentielles de SAS

1. Le sigle SAS signifie Statistical Analysis System et se prononce SASSE et non S.A.S. La
société SAS a été fondé en 1976 par J. Goodnight.

2. SAS est un logiciel qui a pour ambition de couvrir toutes les étapes du traitement des
données. SAS est donc un logiciel de gestion et d’analyse statistique des données.

3. SAS est principalement un logiciel de traitement de données individuelles peu orienté vers le
traitement des séries temporelles.

4. SAS est proposé sous la forme de modules. Par ailleurs, SAS ne s'achète pas, il se loue à
l'année (fichier SID.TXT). cf. page suivante pour l’installation

5. SAS existe pour pratiquement tous les types d'ordinateurs et tous les systèmes
d'exploitation.




P. Blanchard – Logiciel SAS – Master 2 Recherche
7



NOTES POUR L'INSTALLATION DE SAS-LICENCE GRATUITE ETUDIANT V 9.1

Si une ancienne version de SAS est déjà installée, il vaut mieux la désinstaller.

1°) Mettez le CD SAS. L'installation se lance automatiquement. Si elle ne démarre pas, exécuter le
programme SETUP.EXE qui est sur le CD.

2°) Utiliser les choix du menu pour END USERS STEP.
        a) Optionnel : Vérifiez tout d’abord votre système en cliquant sur « verify system
requirements » )
        b) cliquez sur « install sas system »

Attention : pour certains portables, il peut y avoir des problèmes d’installation. Cf. le mail reproduit
à la fin du document.

A partir de là, plusieurs fenêtres de dialogue vont apparaître (entre 8 et 10), répondez à chaque fois
« suivant » Sauf quand SAS va vous demandez un fichier SID. Taper (ou faites apparaître avec
parcourir) dans la fenêtre indiquée D:SID.TXT
Ce fichier est sur le CD-ROM.

3°) Si SAS vous pose une question sur les extensions de nom de fichier, cochez la case : utiliser
cette réponse pour tous les types, puis cliquez sur « oui »

7°) au message, « installation terminée » cliquez sur « Fin » Quand l'installation est terminée SAS
est installé dans c:PROGRAM FILESSASSAS 9.1

Pour lancer SAS, faites Démarrer Programmes SAS puis SAS 9.1


En cas de problème

Vous devez arrêter l'anti-virus, le firewall, et être connecté en tant
qu'administrateur.

1. Exécuter les pré-requis :
D:srwbundlesvcredst7setup.exe.

2. Télécharger puis installer les Run-Time
http://www.microsoft.com/downloads/release.asp?ReleaseID=28337

3. Puis installer SAS en outrepassant les pré-requis :
D:sassetup.exe nomsupdate
où D: est le lecteur de CD-Rom.

Si cela échoue, essayez avec cette syntaxe :
"D:sassetup.exe nomsupdate"




P. Blanchard – Logiciel SAS – Master 2 Recherche
8



Partie I) Introduction à l’étape DATA et aux procédures


1) L'interface SAS sous Windows


    •   Notre version de SAS est la version 9.1 et fonctionne sous WINDOWS
        XP/2000/Me/NT.

    •   L'interface sous WINDOWS (version anglaise/française).

    •   Utilisation: mode menu ou programme.




Autres fenêtres utiles.

Attention: sous SAS, il y a deux éditeurs, le Enhanced Program Editor (le plus utile) et le Program
Editor.




P. Blanchard – Logiciel SAS – Master 2 Recherche
9


2) Notre premier programme

Le tableau donnees

nom revenu conso
AA 22.3    19.9
BB 30.3    10.1
etc.



Exemple n°1.



DATA essai ; SET donnees ;
   lconso = LOG(conso) ;
   lrev = LOG(revenu) ;
RUN ;

PROC PRINT          DATA = essai ;
RUN ;

DATA essai ; SET essai ;
   pmc = conso/revenu ;
RUN ;

PROC REG DATA = essai ;
     MODEL lconso = lrev / DW;
RUN ; QUIT ;

PROC MEANS DATA = essai N MEAN MIN MAX NMISS ;
     VAR revenu conso pmc ;
RUN ;

Quels principes pour SAS ?




P. Blanchard – Logiciel SAS – Master 2 Recherche
10


                                                               PROC.
A) Un programme SAS se compose d'une suite d'étapes DATA et de PROC Notre programme
se compose de deux étapes DATA et de trois étapes PROC.

    •   L'étape DATA a pour objet de créer ou de modifier un tableau (on dit aussi une table) de
        données (stocké dans un fichier de données SAS, temporaire ou permanent).

    •   Une étape PROC a pour objet d'utiliser un tableau SAS existant pour en faire une analyse
        (statistique, graphique, économétrique…).


Etape DATA                                         Etape PROC
Commence par DATA                                  Commence par PROC
Lit des données                                    Effectue une analyse statistique, graphique…
Crée ou modifie des variables/observations
Crée ou modifie un tableau
Se termine par RUN, DATA ou PROC                   Se termine par RUN, QUIT, DATA ou PROC


DATA essai ; SET donnees ;                            |
   lconso = LOG(conso) ;                              |
   lrev = LOG(revenu) ;                               |    Etape DATA
RUN ;                                                 |

PROC PRINT          DATA = essai ;                    |    Etape PROC
RUN ;                                                 |

- Un tableau SAS peut être utilisé par une ou plusieurs étapes DATA et/ou PROC.

- Une instruction DATA ou PROC est terminée dans 2 cas:

-   Une instruction RUN est généralement mise à la fin de chaque étape DATA ou PROC.

-   Elle permet d’exécuter un bloc d’instructions à l’aide de la souris sans nécessairement exécuter
    la totalité du programme. C’est une bonne idée pour mettre un programme au point par petit
    bout.

PROC PRINT          DATA = essai ; RUN ;

- Il n'y a pas de END à la fin d’un programme (ne pas mettre ENDSAS ;). Par contre, on mettra
un RUN ; sinon, la dernière instruction ne sera pas exécutée (ou pas au bon moment).




P. Blanchard – Logiciel SAS – Master 2 Recherche
11


B) On distingue les instructions d’appel, les instructions, les options des instructions d'appel,
les options des instructions, les variables, les tableaux et les fonctions.


    •   Les instructions d’appel sont DATA ou PROC.

    •   Les instructions de l’instruction d’appel sont parfois obligatoires (par exemple MODEL),
        parfois facultatives (par exemple VAR) selon les cas.

    •   Par définition, les options peuvent ne pas être spécifiées (options par défaut). Attention, il y
        a deux types d’options : les options de l’instruction d’appel et les options des instructions.

    •   Les instructions, les noms des variables et des tableaux peuvent être spécifiées en
        minuscules, en majuscules ou dans un mélange des deux.

    •   Il peut y avoir plusieurs d’instructions dans une instruction d’appel. L'ordre des instructions
        dans une PROC (ou dans DATA) est indifférent. Idem pour les options.

    •   /* … */ permet d’introduire des commentaires dans le programme. Très utile.


Exemple n°2.


PROC PRINT ; RUN ;                                                                   /* correct */
PROC MEANS DATA = temp ; RUN ;

PROC REG ; RUN ;                                                                   /* incorrect */

PROC REG DATA = temp SIMPLE ;                                    /* instructions et options */
    MODEL y = x1 x2 x3 /DW COVB STB ;
    TEST x1 = 1 ;
RUN ; QUIT ;




P. Blanchard – Logiciel SAS – Master 2 Recherche
12


C) Les principales règles syntaxiques


Chaque instruction se termine par un ;

Les instructions, les variables, les fonctions… peuvent être écrites en minuscules ou majuscules.

Une instruction peut être écrite sur plusieurs lignes.

Une instruction peut commencer à n’importe quelle colonne.

L'espace est le caractère séparateur entre les instructions, les options, les variables ou les noms de
tableau. L’oubli du ; est l’erreur la plus fréquente dans un programme SAS. Cette erreur peut être
difficile à détecter.

    •   Vous noterez que le ; sépare les instructions d’appel et les instructions entre elles (mais pas
        de ; entre les instructions et les options).

    •   Par contre, mettre deux points-virgule ne génère aucune erreur (= 1 instruction vide).

    •   Plusieurs instructions peuvent se trouver sur la même ligne.

    •   Néanmoins, il vaut mieux aérer le programme avec les lignes vides.

    •   Une instruction commence et finit à n’importe quelle colonne d’une ligne donnée. Ceci
        permet d’utiliser l'indentation pour isoler l'instruction d'appel des instructions qui en font
        partie.


Exemple n° 3.


PROC PRINT DATA = temp ; RUN ; PROC MEANS DATA = temp ; RUN ;

/* ou */

PROC PRINT DATA = temp ; RUN ;

PROC MEANS DATA = temp ; RUN ;



PROC     PRINT DATA                =          temp ;                /* pas    PROC P      RINT ; */
RUN ;

PROC MEANS DATA = temp ;                                            /* stat. des. par année */
           BY annee ;
           VAR conso revenu ;
RUN ;




P. Blanchard – Logiciel SAS – Master 2 Recherche
13




D) Les tableaux SAS et les variables

•    Un tableau SAS peut être crée soit dans une étape DATA soit dans une étape PROC. Un tableau
     SAS comporte une ligne par observation et une colonne par variable:

Obs                       Nomvar1             Nomvar2              …                   Nomvark
1                         4                   1268.2                                   Texte 1
2                         4.2                 -2                                       Texte 2
…

•    Un tableau SAS est stocké dans un fichier (temporaire ou permanent) dont l’extension est la
     plupart du temps .sas7bdat (V8/V9).

•    Un tableau SAS peut contenir 2 types de variables : des variables numériques ou chaînes de
     caractères. (Attention, une fois qu’une variable a été définie numérique ou caractère, elle ne
     peut changer de type).

     -       i) Les valeurs numériques, par exemple 5.31, 1.4E13 et 8 sont des valeurs numériques
             correctes. SAS ne fait pas de différence entre les entiers et les réels (1 ou 1.0). Une valeur
             manquante est notée par un point (•) et peut résulter d’un calcul (x=log(0)) ou d’une
             affectation ( x = • ).

     -       ii) Les variables chaînes de caractères dont le contenu est entré entre apostrophes ou
             guillemets et dont la longueur est au maximum de 32767 car. (V8/V9). Une valeur
             manquante est notée par un une chaine vide (rep1 = '' ;).

     - iii) Pour créer une variable logique (0/1), il faut le faire sous la forme d'une variable
     numérique ou d'une chaîne de caractères.


•    Les noms des variables et des tableaux ont de 1 à 32 caractères et sont composés de lettres, de
     chiffres et du blanc souligné ( _ ). Le premier caractère doit être impérativement une lettre ou le
     blanc souligné. Les caractères accentués ne sont pas admis. Idem pour les symboles spéciaux &,
     *, $, % ...


rep1     =    'OUI' ;
rep2     =    'oui' ;
rep3     =    "OUI" ;
rep3     =    ‘d’’accord’ ;

cc       = '123' ;                  /* attention aux apostrophes/guillemets non balancés /




Exemples de noms de variables corrects ou incorrects : pnb_fr , x1 , y , numtelephone , 1pb ,
bizarre , _123 , moi , keynes , x$ , taux% , a&b , télé, _mes erreur



P. Blanchard – Logiciel SAS – Master 2 Recherche
14




•   Fonctionnement de l’étape DATA


L’instruction DATA est une boucle sur le tableau.



DATA essai ;
SET mesdonnees ;
   lconso = LOG(conso) ;
   lrev = LOG(revenu) ;
RUN ;

Données en                                Etape DATA      Tableau SAS
entrée (tableau                                           crée (essai)
mesdonnees)

Obs 1                                     Instruction 1   Obs 1
Obs 2                                                     Obs 2
Obs 3                                     Instruction 2   Obs 3
…                                                         …
                                          Instruction 3
                                          …




P. Blanchard – Logiciel SAS – Master 2 Recherche
15


E) Les librairies SAS

Exemple n°4.


DATA temp ; SET donnees ;
...
RUN ;



Définir un LIBNAME revient à assigner un nom physique de répertoire à un nom logique de
librairie. C’est le nom logique (une sorte de synonyme) qui sera utilisé dans le programme SAS.

Exemple n°5.


LIBNAME malib        'E:Mes Documents' ; RUN; /* une partie des étapes DATA est reproduite */

DATA deux ; SET malib.donnees ;
...

DATA malib.deux ; SET malib.donnees ;
...

DATA malib.un ; SET deux ;
...

DATA un ; SET deux ;
...

DATA work.un ; SET work.deux ;
...



On suppose que tous les tableaux des SET et le répertoire MES Documents existent.

    1. Le LIBNAME assigne la librairie logique « malib » au répertoire « Mes Documents » du
       disque dur E : (minuscules = majuscules sous DOS/Windows). Le nom logique (malib) doit
       avoir 8 caractères maxi mais le nom du tableau peut avoir 32 car. maximum.

    2. En effet, SAS tourne sur des ordinateurs dont les conceptions en terme de stockage sur
       disque diffèrent (façon d’accéder à un répertoire d’un disque).




NB:

P. Blanchard – Logiciel SAS – Master 2 Recherche
16




    •   Où est la librairie par défaut ?     proc contents

    •   L’utilisation de plusieurs LIBNAME est possible mais pas souvent utile.

    •   On peut aussi définir une librairie ave l'icône NEW LIBRARY ou avec l'EXPLORER.

    •   Les tableaux SAS sont stockés sur disque sous la forme de fichiers de données de SAS et
        ont l'extension .SD2 (V6) ou sas7bdat (V8-V9) sur micro-ordinateurs.

    • LIBNAME in V6 "c:vieuxfichiers" ; RUN ; pour des lire des tableaux SAS
        version 6.

    • Dans la documentation SAS, une table SAS est souvent appelée un "member" (un membre
        d’une librairie).

    • Il est possible de faire (mais non conseillé):



DATA deux ; SET 'C:Mes Documentsdonnees’ ;             /* sans extension */
...
DATA 'C:Mes Documentsdeux’ ; SET 'C:Mes Documentsdonnees’;
...
PROC PRINT DATA = 'C:Mes Documentsdeux’ ; RUN ;

DATA ‘deux’ ; SET malib.donnees ;




P. Blanchard – Logiciel SAS – Master 2 Recherche
17


3) Introduction à l'étape DATA


L'étape DATA sert à préparer des données qui seront stockées dans un tableau pour une analyse
ultérieure (PROC). Elle a donc pour objet de créer ou modifier un tableau SAS en créant ou
modifiant des variables et/ou des observations. L’étape DATA opère soit sur des tableaux SAS déjà
existants, soit sur des données présentes dans le programme lui-même (dites données dans le flot
d'entrée), soit sur des fichiers crées par certains logiciels (pas Excel).


A) Création/modification d'un tableau SAS

a) Création d’un nouveau tableau à partir d’un autre tableau SAS.


Exemple n°6.


DATA regress1 ; SET datac ;
   lconso = LOG(conso) ;
   lrevenu = LOG(revenu) ;
RUN ;

PROC PRINT DATA = regress1 ; VAR lconso lrevenu ;
RUN ;                                           /* DATA = regress1 optionnel */




b) Modification d’un tableau existant

Exemple n°7.


DATA datac ; SET datac ;                                 /* attention risqué si erreur */
   lconso = LOG(conso) ;
   lrevenu = LOG(revenu) ;
RUN ;

PROC PRINT ; VAR lconso lrevenu ; RUN ;                      /* DATA = datac optionnel */




P. Blanchard – Logiciel SAS – Master 2 Recherche
18


c) Lecture de données dans le flot d'entrée.

Cette solution est utile quand on veut introduire des données peu nombreuses. Cela évite de créer
un fichier de données séparé du programme. Par conséquent, les données sont dans le programme.


Exemple n°8.


DATA essai2 ;
INPUT nom $ salaire datenais csp $ ;      /* $ signale 1 var. chaîne de car. */
DATALINES ;                                  /* on peut mettre aussi CARDS ; */
DUPONT 100000.4 1954 cadre
DURANT   50000.1 1960 ouvrier
TOTO     •       1985 cadre              /* notez la valeur manquante notée • */
;                                 /* notez le ; qui annonce la fin des CARDS */
PROC PRINT ;
RUN ;



notes:


-   L'espace sépare les valeurs en colonnes (format ASCII).

-   Il ne faut pas oublier de valeurs pour 1 observation.

-   Ordre des valeurs = ordre des colonnes.

-   Il y a de très nombreuses options qui permettent de lire n’importe quelle autre structure de
    données.

-   La lecture de données sur fichiers externes (ASCII) est facile (INFILE et FILENAME) et
    puissant (cf. la documentation de C. Truy).

-   Autre solution pour créer un tableau VIEWTABLE (Menu Outils + Editeur de tables SAS)




P. Blanchard – Logiciel SAS – Master 2 Recherche
19


B) Création/modification des variables d'un tableau SAS


a) L’instruction IF ... THEN ... ELSE (ELSE est optionnel) ; qui permet la
création/modification conditionnelle d’une ou plusieurs variables.


                                                     IF/THEN/ELSE
Il y a plusieurs formes possibles pour l'instruction IF/THEN/ELSE


Exemple n°9.


IF datenais <= 1992 THEN classe               = ‘jeune’ ; ELSE classe   = ‘agé’ ;

IF etage > 3 AND ascenseur = ‘non’ then type = 1 ; else type = 0 ;



IF banque = ‘BNP’ THEN             DO ; pays = ‘France’ ; type = ‘dépôt’ ; END ;
                  ELSE             DO ; pays = ‘Autre’ ; type = ‘nd’     ; END ;

IF cout < 0 THEN cat = '<0' ;
         ELSE IF cout = 0 THEN cat = '=0' ; ELSE cat = '>0' ;

IF date = '1983' THEN dum83 = 1 ; ELSE dum83 = 0 ;
/* ou */ dum83 = date EQ '1983' ;
/* ou */ dum83 = date = '1983' ;



NB

-    opérateurs logiques: = EQ ^= NE > GT < LT >= GE <= LE . Attention >< et <>
     signifient respectivement minimum et maximum.
-    opérateurs de comparaisons multiples: NOT AND & et OR | !
-    opérateur IN : IF x IN(1,3,5,7,9) THEN impair = ‘oui’ ;
-    opérateurs mathématiques: =, +, -, *, /, **
-    fonctions: cf. photocopie en annexe.

Exemple : la fonction LAG




P. Blanchard – Logiciel SAS – Master 2 Recherche
20


b) L'instruction SELECT/WHEN Son objectif est de remplacer le IF...THEN...ELSE peu
                    SELECT/WHEN.
clair. Elle est en outre plus rapide lors du traitement de gros fichier.


Exemple n°10.


DATA essai1 ; SET essai ;
SELECT ;
    WHEN(effectif=.)                                taille   =   'nd' ;
    WHEN(0<effectif<50)                             taille   =   '1' ;
    WHEN(50<=effectif<100)                          taille   =   '2' ;
    WHEN(100<=effectif)                             taille   =   '3' ;
    OTHERWISE                                       taille   =   'pb' ;
END ; RUN ;




Exemple n°11.



DATA essai1 ; SET essai ;
SELECT (a);
    WHEN(1)            DO ; b = 1 ; c = 5 ; END;
    WHEN(2)            DO ; b = 2 ; c = 2 ; END ;
    WHEN(5)            b = 3 ;                                     /* ou DO ; b=3 ; END ; */
    OTHERWISE          ;
END ; RUN ;



NB :

•   une autre solution à IF et SELECT sera présentée en 2ème partie (PROC FORMAT).
•   condition multiple WHEN(a=1 AND c = 0) …
•   attention si a est une valeur manquante

DATA essai1 ; SET essai ;
SELECT ;
    WHEN(a<0)             b = 1 ;
    ...
END ; RUN ;

/* ou */                                     /* b=1 car une val. manq. est codée comme -10308
*/

DATA essai1 ; SET essai ; IF a <0 THEN b = 1 ; RUN ;




P. Blanchard – Logiciel SAS – Master 2 Recherche
21


c) La sélection de variables dans l’étape DATA

Exemple n°12.


DATA tab1 ; SET donnees ;
    KEEP budget consomm ;
...

DATA tab1 ; SET donnees ;
    DROP datnaiss ;
...

DATA tab1; SET donnees ;
    RENAME budget = revenu ;
...




•   RENAME budget = revenu ; se lit comme RENAME anciennom = nouveaunom ;
•   on peut utiliser KEEP et DROP en même temps, mais ce n'est pas conseillé.
•   on utilisera DROP ou KEEP selon le nombre de variables à conserver ou à éliminer.
•   Les instructions KEEP, DROP et RENAME peuvent se mettre n'importe où dans une étape DATA.
•   Et avec un ordre indifférent.




P. Blanchard – Logiciel SAS – Master 2 Recherche
22


Exemple n°13.


DATA tab1 ; SET donnees ;                                 /* contient au moins x1 budget */
   KEEP lconso budget x1 lagbudget ;
   RENAME x1 = conso ;
   lconso = LOG(x1) ;
   lagbudget = LAG(budget) ;
RUN ;



•   Ne pas faire lconso =          LOG(conso)      ; En effet, le RENAME n'est effectif qu'à la fin de
    l'étape DATA.

•   Dans le même ordre d'idée, comme le RENAME ne se fait qu’à la fin, il ne faut pas mettre
    conso dans le KEEP, mais x1.

•   De même, si on fait un KEEP, il ne faut pas oublier de mettre la liste complète des variables à
    garder y compris lconso et lagbudget dans le KEEP (sinon créée mais pas gardée).


Attention de ne pas s'embrouiller dans les DROP, KEEP et RENAME comme instruction ou option.


Exemple n°14.


DATA tab1 ( KEEP = budget consomm ) ;                        /* options au nom de tableau */
SET donnees ;
...

DATA tab1 ( DROP = dat_naiss ) ; SET donnees ;
...

DATA tab1 ( RENAME = ( budget = revenu ) ) ; SET donnees ;
...




P. Blanchard – Logiciel SAS – Master 2 Recherche
23


4 ) Introduction aux principales procédures


Les données utilisées dans ce qui suit :


DATA temp ;
INPUT nom $ num sexe $ csp $ revenu                conso datenaiss DDMMYY8. ;
CARDS ;
un       1  h employé      10   9                  19/02/80
deux     2  f cadre        11   7                  19/03/81
trois    3  h ouvrier       5   4                  29/08/64
quatre 4    h employé       8   7                  10/12/54
cinq     5  h cadre        14 10                   05/10/90
six      6  h ouvrier       6   4                  10/11/06
sept     7  h ouvrier       7   6                  12/06/89
huit     8  f cadre        11 10                   30/05/87
neuf     9  h ouvrier       9   8                  01/04/81
dix     10  h employé       9   8                  10/09/79
onze    11  f employé       8   7                  18/09/78
douze    12     h    ouvrier           9    •      17/07/94
;
RUN ;

NB : DDMMYY8. est un informat. En réalité 19/02/80 est stocké par SAS comme une nombre égal
      à 7354 (c’est à dire le nombre de jours écoulés depuis le 1/1/1960). A noter que c’est un
      peu pareil avec Excel (sauf que 0 est pour le 1/1/1900).

    Le symbole • repère une valeur manquante.




P. Blanchard – Logiciel SAS – Master 2 Recherche
24


A) Les procédures utilitaires


1) PROC PRINT

permet d'imprimer le contenu d'un tableau.

Exemple n°15.


PROC PRINT DATA = temp ; VAR nom sexe csp conso ;
RUN ;



                                 Essai de Proc print          09:17 Monday, March 24, 2003 1

                                Obs       nom      sexe    csp       conso

                                  1       un       h      employé      9
                                  2       deux     f      cadre        7
                                  3       trois    h      ouvrier      4
                                  4       quatre   h      employé      7
                                  5       cinq     h      cadre       10
                                  6       six      h      ouvrier      4
                                  7       sept     h      ouvrier      6
                                  8       huit     f      cadre       10
                                  9       neuf     h      ouvrier      8
                                 10       dix      h      employé      8
                                 11       onze     f      employé      7
                                 12       douze    h      ouvrier      •



Quelques variantes utiles.


PROC PRINT DATA = temp (OBS=10) ; RUN ;



PROC PRINT ; VAR X1-X10 ; RUN ;                                     /* dans certains cas */



PROC PRINT ;
VAR nom datenaiss revenu conso ;
FORMAT nom $4. datenaiss DDMMYY10. revenu dollar10.2 conso comma4.1               ; RUN ;


Autre façon de visualiser une table: Le wiewer de SAS avec l'EXPLORER puis sélection de la
librairie et de la table SAS.


P. Blanchard – Logiciel SAS – Master 2 Recherche
25


   PROC
2) PROC CONTENTS

Exemple n°16.


PROC CONTENTS DATA = temp SHORT ; RUN ;



                                        The CONTENTS Procedure

                         -----Alphabetic List of Variables for WORK.TEMP-----

                                   conso csp nom num revenu sexe




Exemple n°17.


PROC CONTENTS DATA = temp ; RUN ;



                                        The CONTENTS Procedure
        Data Set Name:   WORK.TEMP                               Observations:           12
        Member Type:     DATA                                    Variables:              6
        Engine:          V8                                      Indexes:                0
        Created:         14:15 Tuesday, September 24, 2002       Observation Length:     48
        Last Modified:   14:15 Tuesday, September 24, 2002       Deleted Observations:   0
        Protection:                                              Compressed:             NO
        Data Set Type:                                           Sorted:                 NO
                          -----Engine/Host Dependent Information-----
Data Set Page Size:          4096
Number of Data Set Pages:    1
First Data Page:             1
Max Obs per Page:            84
Obs in First Data Page:      12
Number of Data Set Repairs: 0
File Name:                   C:DOCUME~1PIERRE~1LOCALS~1TempSAS
                             Temporary Files_TD932temp.sas7bdat
Release Created:             8.0202M0
Host Created:                WIN_PRO
                    -----Alphabetic List of Variables and Attributes-----
                              #    Variable    Type    Len    Pos
                              ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
                              6    conso       Num       8     16
                              4    csp         Char      8     40
                              2    nom         Char      8     24
                              1    num         Num       8      0
                              5    revenu      Num       8      8
                              3    sexe        Char      8     32


Variantes:

    •    PROC CONTENTS DATA = malib._ALL_ SHORT ;
    •    PROC CONTENTS ; RUN ; pour le dernier tableau crée.




P. Blanchard – Logiciel SAS – Master 2 Recherche
26




B) Les procédures de statistiques descriptives


1) PROC MEANS

Exemple n°18.


PROC MEANS DATA = temp ; VAR revenu conso ;
RUN ;




                                         The MEANS Procedure

        Variable     N            Mean         Std Dev         Minimum         Maximum
        ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
        revenu      12       8.9166667       2.4293034       5.0000000      14.0000000
        conso       11       7.0833333       2.0652243       4.0000000      10.0000000
        ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ




Les principales options de PROC MEANS options sont :


    •   N NMISS MEAN STD MIN MAX ...
    •   les quantiles (ou fractiles): P1 P5 P10 Q1 (P25) MEDIAN (P50) Q3 (P75)
        P90 P95 P99 QRANGE etc.
    •   CSS CV KURTOSIS RANGE SKEWNESS SUM USS STDDEV (ou STD) VAR
        ...
    •   CLM (intervalle de confiance à 95%) ...


NB : On peut obtenir d’autres statistiques et certains graphiques avec PROC UNIVARIATE.




P. Blanchard – Logiciel SAS – Master 2 Recherche
27


2) L’instruction PROC FREQ

Exemple n°19.


PROC FREQ DATA = temp ; TABLES sexe ; RUN ;



                                          The FREQ Procedure

                                                     Cumulative    Cumulative
                    sexe    Frequency     Percent     Frequency      Percent
                    ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
                    f              3       25.00             3        25.00
                    h              9       75.00            12       100.00


NB: Frequency = Effectif et PERCENT = Fréquence.


Exemple n°20.


PROC FREQ DATA = temp ; TABLES csp*sexe ; RUN ;



                                         Table of csp by sexe

                                csp        sexe

                                Frequency‚
                                Percent ‚
                                Row Pct ‚
                                Col Pct ‚f        ‚h       ‚ Total
                                ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ
                                cadre    ‚      2 ‚      1 ‚      3
                                         ‚ 16.67 ‚    8.33 ‚ 25.00
                                         ‚ 66.67 ‚ 33.33 ‚
                                         ‚ 66.67 ‚ 11.11 ‚
                                ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ
                                employé ‚       1 ‚      3 ‚      4
                                         ‚   8.33 ‚ 25.00 ‚ 33.33
                                         ‚ 25.00 ‚ 75.00 ‚
                                         ‚ 33.33 ‚ 33.33 ‚
                                ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ
                                ouvrier ‚       0 ‚      5 ‚      5
                                         ‚   0.00 ‚ 41.67 ‚ 41.67
                                         ‚   0.00 ‚ 100.00 ‚
                                         ‚   0.00 ‚ 55.56 ‚
                                ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ
                                Total           3        9       12
                                            25.00    75.00   100.00




P. Blanchard – Logiciel SAS – Master 2 Recherche
28




Options

NOFREQ: n’édite pas les effectifs.
NOPERCENT: n’édite pas les % par rapport au total des effectifs. NOROW: n’édite pas les % par
rapport à la somme en ligne.
NOCOL: n’édite pas les % par rapport au total de chaque colonne.
NOCUM: n’édite pas les effectifs cumulés (pour tableau à 1 caractère).
MISSING: les valeurs manquantes comptent dans le calcul (comme une modalité et dans le calcul
des effectifs totaux et donc des %) sinon elles sont comptabilisées à part.
MISPRINT: les valeurs manquantes sont dans le tableau mais ne comptent pas comptent dans le
calcul des %.


Exemple n° 21.


PROC FREQ DATA = temp ; TABLES csp*sexe /NOROW NOCOL ;
RUN ;



                                        csp        sexe

                                        Frequency‚
                                        Percent ‚f        ‚h       ‚ Total
                                        ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ
                                        cadre    ‚      2 ‚      1 ‚      3
                                                 ‚ 16.67 ‚    8.33 ‚ 25.00
                                        ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ
                                        employé ‚       1 ‚      3 ‚      4
                                                 ‚   8.33 ‚ 25.00 ‚ 33.33
                                        ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ
                                        ouvrier ‚       0 ‚      5 ‚      5
                                                 ‚   0.00 ‚ 41.67 ‚ 41.67
                                        ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ
                                        Total           3        9       12
                                                    25.00    75.00   100.00




P. Blanchard – Logiciel SAS – Master 2 Recherche
29


Exemple n°22.


PROC FREQ DATA = temp ; TABLES sexe csp*sexe ; RUN ;




NB :

- A noter qu'en présence de variables numériques (revenu, age, chiffre d’affaires...) il est la plupart
du temps nécessaire de recoder la variables en une variable (numérique ou caractère) composé d’un
nombre de classe limité.

-    Il y a de très nombreuses options (statistiques notamment).


Exemple n°23.


PROC FREQ DATA = temp ; TABLES csp*sexe / CHISQ;
RUN ;



Statistiques pour table de csp par sexe

Statistique                       DF      Valeur    Proba.
ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
Khi-2                              2      4.4444    0.1084
Test du rapport de vraisemblance   2      5.1783    0.0751
Khi-2 de Mantel-Haenszel           1      3.9855    0.0459
Coefficient Phi                           0.6086
Coefficient de contingence                0.5199
V de Cramer                               0.6086

AVERTISSEMENT : 100% des cellules nécessitent un effectif inférieur
                     à 5. Le Khi-2 ne peut pas convenir.

Taille de l'échantillon = 12


/*     Le tableau à 2 car. n’est pas reproduit de nouveau */




P. Blanchard – Logiciel SAS – Master 2 Recherche
30


3) L’instruction PROC CORR


Exemple n°24.


PROC CORR NOSIMPLE DATA = temp ; VAR revenu conso; RUN ;



                                                   The CORR Procedure

                                           2   Variables:       revenu   conso



                                     Pearson Correlation Coefficients
                                            Prob > |r| under H0: Rho=0

                                                            revenu        conso

                                          revenu        1.00000          0.83503
                                                                          0.0007
                                                                12            11

                                          conso         0.83503          1.00000
                                                         0.0007
                                                             11                  11



•   Une variante utile est :

PROC CORR ; VAR conso age revenu ; WITH pmc secteur ;

•   Différents coefficients de corrélation peuvent être calculés.

•   Les principales options sont:

    a)     NOSIMPLE : pas de stat. des. fournies.
    b)     NOMISS : si une observation est manquante pour une variable, elle est éliminée pour
       toutes les autres variables de l’analyse (cylindrage).
    c)     NOPROB : pas d’affichage du niveau de significativité marginale associée à chaque
       coefficient de corrélation.
    d)     SSCP et/ou COV fait afficher la matrice des produits croisés (XtX) et/ou de la matrice de
       variance-covariance.




P. Blanchard – Logiciel SAS – Master 2 Recherche
31


C) Les instructions BY/CLASS et la procédure PROC SORT


1) L'instruction PROC SORT ... ; Cette instruction joue un rôle fondamental dans SAS pour
des raisons que nous verrons dans un deuxième temps.


Exemple n°25.


PROC SORT      DATA = temp ; BY pays ;             RUN ; /* tri par ordre croissant de pays */
                                                                  /* numérique ou caractère */



On trie le dernier tableau crée. Le résultat trié aura donc le même nom, le fichier de base est perdu.


PROC SORT ; BY region annee ; RUN ;



PROC SORT ; BY region DESCENDING annee ; /* ordre croiss. de region (alphab.)*/
RUN ;                                    /* et décroiss. d’année : 83,82,81. */
                                                 /* region et non région !!! */



PROC SORT      DATA =temp OUT = ftrie ; BY pays ;            /* fichier d'origine conservé */
RUN ;



Remarques: pour supprimer les doublons dans un tableau SAS, on peut faire:


PROC SORT DATA =temp OUT = ftrie NODUPKEY ;                 /* supprime les doublons / clés de tri */
BY pays annee ; RUN ;



ou

PROC SORT DATA =temp OUT = ftrie NODUPLICATES ; /* supprime les doublons / obs. */
BY pays annee ; RUN ;




P. Blanchard – Logiciel SAS – Master 2 Recherche
32


2) Les instructions BY et CLASS : une application à PROC MEANS ;


Exemple n°26.


PROC MEANS ; BY csp ; RUN ;

PROC FREQ ; TABLES csp ; BY sexe ; RUN ;                /* attention il faut un PROC SORT */

PROC REG ;
MODEL conso = revenu ; BY region ; RUN ;                         /* et ici un autre !!!! */



MAIS ATTENTION, il est indispensable que le tableau soit d'abord trié sur les mêmes variables et
dans le même ordre que celles de l'instruction BY.


Exemple n°27.


PROC SORT DATA = temp ; BY csp ; RUN ;

PROC MEANS ; VAR revenu conso ; BY csp ; RUN ;


----------------------------------------- csp=cadre ------------------------------------------

                                         The MEANS Procedure

        Variable     N            Mean         Std Dev         Minimum         Maximum
        ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
        revenu       3      12.0000000       1.7320508      11.0000000      14.0000000
        conso        3       9.0000000       1.7320508       7.0000000      10.0000000
        ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ

---------------------------------------- csp=employé -----------------------------------------

        Variable     N            Mean         Std Dev         Minimum         Maximum
        ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
        revenu       4       8.7500000       0.9574271       8.0000000      10.0000000
        conso        4       7.7500000       0.9574271       7.0000000       9.0000000
        ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ

---------------------------------------- csp=ouvrier -----------------------------------------

        Variable     N            Mean         Std Dev         Minimum         Maximum
        ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
        revenu       5       7.2000000       1.7888544       5.0000000       9.0000000
        conso        4       5.4000000       1.6733201       4.0000000       8.0000000
        ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ




P. Blanchard – Logiciel SAS – Master 2 Recherche
33


    Une alternative à BY est CLASS sexe ; qui évite d’avoir à trier le tableau. Les
    résultats ont une présentation légèrement différente.

Exemple n°28.


PROC MEANS DATA = temp ; VAR revenu conso ; CLASS csp ; RUN ;




                                     The MEANS Procedure
               N
  csp        Obs   Variable    N           Mean        Std Dev        Minimum        Maximum
  ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
  cadre        3   revenu      3     12.0000000      1.7320508     11.0000000     14.0000000
                   conso       3      9.0000000      1.7320508      7.0000000     10.0000000
  employé      4   revenu      4      8.7500000      0.9574271      8.0000000     10.0000000
                   conso       4      7.7500000      0.9574271      7.0000000      9.0000000
  ouvrier      5   revenu      5      7.2000000      1.7888544      5.0000000      9.0000000
                   conso       4      5.4000000      1.6733201      4.0000000      8.0000000
  ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ




Mises en garde:

    •   si la variable est continue, chaque valeur distincte est une modalité. BY peut produire alors
        des résultats très volumineux, voire inutilisables comme par exemple, si l’on fait

        PROC MEANS ; BY revenu ; RUN ;

    •   En général, BY s'utilise plutôt sur des variables de type caractère ou sur des variables
        continues avec peu de valeurs différentes (année..)..

    •   CLASS ne fonctionne pas pour toutes les procédures (PROC PRINT ; BY ; ).

    •   On peut donc faire PROC REG ... ; BY ; RUN ; ou PROC FREQ ... ; BY ;
        RUN ; etc.




P. Blanchard – Logiciel SAS – Master 2 Recherche
34


D) Les procédures graphiques

Elles sont de deux types:

a. les procédures basse définition. On laisse de côté.

b.   les procédures haute définition.


Les graphiques haute définition sont affichés dans une fenêtre spécifique.

Les graphiques haute définition crées peuvent être facilement exporter dans des formats très variés
de fichier graphique bmp, jpg,wmf, gif, ps... par le menu (fichier, exporter).




P. Blanchard – Logiciel SAS – Master 2 Recherche
35




1) PROC GPLOT: graphique dit XY.

Exemple n°29.

Goptions Ftext = swissb ;           /* ce n’est pas une étape DATA ni une PROC */
Axis1 Label=('Revenu') ;
Axis2 Label =('N') ;
Symbol1 Color = Black    I=Join Value=Circle ;
RUN ;

PROC GPLOT DATA = temp ;
   PLOT revenu*num ;
RUN ; QUIT ;




P. Blanchard – Logiciel SAS – Master 2 Recherche
36


Exemple n°30. (on peut demander plusieurs graphiques dans une demande).

PROC GPLOT DATA = temp ;
   PLOT revenu*num ;
   PLOT conso*revenu ;
RUN ; QUIT ;



Exemple n°31. (superposition)

DATA temp ; SET temp ;
Age = 2006 - YEAR(datenaiss) ;
RUN ;

Goptions Ftext = swissb ;
Axis1 Label=('Revenu et Age') ; Axis2 Label =('N') ;
Symbol1 Color = Black    I=Join Value=Circle ;
Symbol2 Color = Red      I=Join Value=square ;
RUN ;
PROC GPLOT DATA = temp ;
 PLOT revenu*num age*num / OVERLAY haxis = axis2 vaxis = axis1 ;
 TITLE Graphique overlay ; Footnote Source : PB ;
RUN ; QUIT ;




P. Blanchard – Logiciel SAS – Master 2 Recherche
37


2) PROC GCHART: permet de représenter une série (num. ou car.) sous la forme d’histogramme
   ou sectoriel.


Exemple n°32.


PROC GCHART DATA = temp ;
  PIE sexe ;
  HBAR csp ;
 TITLE Utilisation de PROC GCHART ; Footnote Source : PB ;
RUN ; QUIT ;




    •   Graphiques en couleur

    •   HBAR csp / TYPE = PCT ;           pour avoir les % et non les effectifs.

    •   Nombreuses variantes




P. Blanchard – Logiciel SAS – Master 2 Recherche
38


Exemple n°33.


Goptions Ftext = swissb ;
Axis1 Label=('CSP') ; Axis2 Label =('Revenu moyen') ;
Symbol1 Color = Black   I=Join Value=Circle ;
Symbol2 Color = Red     I=Join Value=square ;
RUN ;

PROC GCHART DATA = temp ; VBAR csp / TYPE = MEAN SUMVAR = revenu ;
RUN ; QUIT ;




    •   TYPE peut être égal à FREQ, CFREQ, PCT, CPCT SUM ou MEAN.
    •   Très nombreuses options qui dépendent souvent du type de graphique.
    •   Rôle du QUIT.

Exemple n°34. création automatique des classes


PROC GCHART DATA = temp ;
    VHBAR revenu / MIDPOINTS = 6 8 10 12           ;     /* HBAR est aussi possible */
RUN ; QUIT ;


P. Blanchard – Logiciel SAS – Master 2 Recherche
39




Un dernier graphique !




Comment le faire ?




P. Blanchard – Logiciel SAS – Master 2 Recherche
40


E) Les instructions économétriques


1) PROC REG


PROC REG permet d'estimer une modèle économétrique par les moindres carrés ordinaires.


Exemple n°35.


PROC REG ;
  MODEL conso = revenu ;                               /* specification informatique */
RUN ; QUIT ;




                                          The REG Procedure
                                            Model: MODEL1
                                      Dependent Variable: conso

                                          Analysis of Variance

                                                    Sum of                Mean
        Source                       DF            Squares              Square    F Value     Pr > F

        Model                         1        32.71384            32.71384          23.03    0.0007
        Error                        10        14.20282             1.42028
        Corrected Total              11        46.91667



                       Root MSE                 1.19176         R-Square         0.6973
                       Dependent Mean           7.08333         Adj R-Sq         0.6670
                       Coeff Var               16.82479



                                          Parameter Estimates

                                      Parameter              Standard
              Variable       DF        Estimate                 Error      t Value    Pr > |t|

              Intercept       1           0.75353             1.36303        0.55         0.5925
              revenu          1           0.70988             0.14791        4.80         0.0007




Le modèle est donc :      Consoi = β1 + β 2 × Re venui + ui :
   écriture économétrique




P. Blanchard – Logiciel SAS – Master 2 Recherche
41


Les principales options disponibles dans PROC REG options_reg ; sont:
       - DATA = nomtab nom du tableau utilisé, le dernier par défaut
       - NOPRINT n'imprime aucun résultat
       - SIMPLE imprime des stat. des. pour les variables utilisées dans la procédure
       - ALL imprime toutes les statistiques possibles dans PROC REG (volumineux)


Exemple n°36.


Goptions Ftext = swissb ;
Symbol1 Color = Black   Value=Circle ;
Symbol2 Color = Red     Value=square ;
RUN ;

PROC REG SIMPLE DATA = temp ;
   MODEL conso = revenu age / NOINT DW COVB ;
   PLOT Residual.*Obs. ;
   PLOT conso*Obs. Predicted.*Obs. / OVERLAY ;
RUN ; QUIT ;




P. Blanchard – Logiciel SAS – Master 2 Recherche
42


Exemple n°37.


Pour obtenir un test d'hétéroscédasticité et des estimations robustes à l'hétéroscédasticité, faire :


PROC REG DATA = essai ;
MODEL lnc = lnp lny /ACOV SPEC; RUN ; QUIT ;



(résultats des mco non reproduits)

Dependent Variable: LNC

                              Consistent Covariance of Estimates

Variable             Intercept                     LNP                     LNY

Intercept            1.1212904796            0.2181771074          -0.241869513
LNP                  0.2181771074            0.1102122418          -0.050163679
LNY                  0.241869513            -0.050163679            0.0523332408

       Test of First and Second Moment Specification

     DF       Chi-Square         Pr > ChiSq

       5              5.70             0.3365




P. Blanchard – Logiciel SAS – Master 2 Recherche
43


Exemple n°38.



PROC REG ;
MODEL consom = revenu age ;
TEST revenu = 0 , age = 1 ; RUN ; QUIT ;



Exemple n°39.



PROC REG ;
  MODEL y = x1 x2 x3 z1 z2 ;
RESTRICT x1 + x2 + x3 = 1 ; RUN ; QUIT ;



2) PROC AUTOREG.
        AUTOREG

Exemple n°40.


/* test de Chow */

PROC AUTOREG DATA = temp ;
   MODEL conso = revenue age / CHOW = (8);
   TITLE test de Chow ; RUN ;



Test de Chow                                       Structural Change Test
                              Break
Test                          Point        Num DF        Den DF   F Value    Pr > F
Chow                             8             3            40      5.29    0.0036



Exemple n°41.


/* PRAIS-WINSTEN */

PROC AUTOREG ;
   MODEL y = x / METHOD = YW GODFREY DWPROB ;
   TITLE Prais-Winsten ;
RUN ;




P. Blanchard – Logiciel SAS – Master 2 Recherche
44


5) Présentation du programme, de l'output et du LOG

•    Le contenu de chaque fenêtre (pgm, output, log…) peut être imprimé, sauvegardé, coupé-collé.
•    D’autres fenêtres peuvent apparaître (aide, graphique...)
•    les affichages s’empilent dans le Log et dans l’Output après chaque exécution (RUN).
•     Il est inutile de sauvegarder le LOG et l’OUTPUT en règle générale.

i) il faut documenter le programme.

        * commentaire ; ou par /* commentaire */

Exemple n° 42.

DM ‘CLEAR LOG ; CLEAR OUTPUT ; ‘ ;                   /* efface output et log à chaque exéc. */

* Blanchard P., essai.sas, 5/03/2003 ;

DATA temp ; SET consom ;
...

/* édition des données */
PROC PRINT DATA = temp ; RUN ;

PROC PRINT DATA = temp ;            RUN ;          /* édition du tableau temp */

/***************/
/* commentaire */
/***************/

PROC    PRINT DATA = temp ; RUN ;



Exemple n° 43.


    Bleu foncé
                                                            DATA temp ; SET temp ;
     Bleu clair                                             age = 2006 - YEAR(datenaiss) ;
                                                            chaine = 'v' ;
       Vert foncé
           violet
                                                            RUN ;
              rouge
                                                            PROC FREQ ; TABLES Sexe age     ;
              vert                                          TITLE Mon Titre ;
                                                            RUN ;
              Noir
                                                            ceci est une erreur ;

                                                            /* ceci est un commentaire */
DATA, PROC FREQ, RUN et QUIT : BF
SET, TABLES et TITLE : BC


P. Blanchard – Logiciel SAS – Master 2 Recherche
45




ii) L'OUTPUT

Exemple n° 44.

OPTIONS NOCENTER ; RUN ;
TITLE ; FOOTNOTE ; RUN ;

. . .

PROC MEANS ; RUN ;
PROC MEANS ; TITLE Mon Titre ; RUN ;




    Le Système SAS                                 13:39 Thursday, April 20, 2006       1

                                                                 La procédure MEANS

Variable     Nb         Moyenne      Écart-type         Minimum         Maximum
ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ
num          12       6.5000000       3.6055513       1.0000000      12.0000000
revenu       12       8.9166667       2.4293034       5.0000000      14.0000000
conso        11       7.0833333       2.0652243       4.0000000      10.0000000
datenaiss    12         8206.33         4909.87        -1848.00        17115.00
ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ



    Mon Titre                               13:39 Thursday, April 20, 2006          2

                                                                 La procédure MEANS
Idem ci dessus



-   On peut faire du couper-coller (mais il y a mieux l’ODS, cf. plus loin).

-   Utilisation de Title et de Footnote

    •   une instruction TITLE est en effet jusqu'à la prochaine instruction TITLE ;
    •   TITLE ; annule tous les titres (au début du programme)
    •   TITLE doit être placée dans une PROC avant le RUN ; sinon il modifie le titre de la PROC
        précédente. Par conséquent, l’ordre des instructions est PROC ... ; TITLE ... ; RUN ;
    •   TITLEn (avec n=1,...,10) permet d'écrire des textes sur plusieurs lignes: par exemple,
        TITLE texte en première ligne ; TITLE3 texte en troisième ligne ;
    •   L’instruction FOOTNOTE qui suit la même logique que TITLE.

- OPTIONS NOCENTER NODATE NONUMBER LINESIZE = 64-256
           ORIENTATION = PORTRAIT ou LANDSCAPE PAGENO = 1 ;




P. Blanchard – Logiciel SAS – Master 2 Recherche
46


iii) Le LOG


C’est un élément indispensable pour contrôler le bon déroulement de l’exécution. A examiner avant
de regarder les résultats.


Exemple n° 45.


DATA temp ; SET temp ;
age = 2006 - YEAR(datenaiss) ;
lconso = LOG(conso) ;
RUN ;

PROC MEANS ; RUN ;



77     DATA temp ; SET temp ;
78     age = 2006 - YEAR(datenaiss) ;
79     lconso = LOG(conso) ;
80     RUN ;

NOTE: Des valeurs manquantes ont été générées à la suite d'une opération sur
des valeurs manquantes.
      Chaque endroit est défini par : (Nombre de fois) dans (Ligne):(Colonne).
      1 dans 79:10
NOTE: 12 observations copiées de la table WORK.TEMP.
NOTE: La table WORK.TEMP a 12 observations et 9 variables.
NOTE: L'étape DATA a utilisé (Durée totale du processus) :
      temps réel                   0.04 secondes
      temps processeur   0.04 secondes

81
82     PROC MEANS ; RUN ;

NOTE: 12 observations copiées de la table WORK.TEMP.
NOTE: La procédure MEANS a utilisé (Durée totale du processus) :
      temps réel                   0.01 secondes
      temps processeur   0.01 secondes




P. Blanchard – Logiciel SAS – Master 2 Recherche
47


Exemple n° 46.

DATA temp ; SET temp ;
age = 2006 - YEAR(datenaiss) ;
lconso = LOG(conso) ;
RUN ;




PROC MOYENNE ; RUN ;
PROC MEANS RUN ;                                            /* RUN n’est pas en BF */
87
88   PROC MOYENNE ; RUN ;
ERREUR: Procédure MOYENNE introuvable.

NOTE: Le Système SAS a interrompu le traitement de cette étape en raison
d'erreurs.
NOTE: La procédure MOYENNE a utilisé (Durée totale du processus) :
      temps réel                   0.01 secondes
      temps processeur   0.00 secondes

89
90     PROC MEANS RUN ;
                  --- -
                  22 200
ERREUR 22-322: Erreur de syntaxe ; syntaxe requise : ;, ALPHA, CHARTYPE, CLASSDATA, CLM,
COMPLETETYPES, CSS, CV,
               DATA, DESCEND, DESCENDING, DESCENDTYPES, EXCLNPWGT, EXCLNPWGTS,
EXCLUSIVE, FW, IDMIN, KURTOSIS, LCLM,
               MAX, MAXDEC, MEAN, MEDIAN, MIN, MISSING, N, NDEC, NMISS, NONOBS, NOPRINT,
NOTHREADS, NOTRAP, NWAY,
               ORDER, P1, P10, P25, P5, P50, P75, P90, P95, P99, PCTLDEF, PRINT,
PRINTALL, PRINTALLTYPES, PRINTIDS,
               PRINTIDVARS, PROBT, Q1, Q3, QMARKERS, QMETHOD, QNTLDEF, QRANGE, RANGE,
SKEWNESS, STDDEV, STDERR, SUM,
               SUMSIZE, SUMWGT, T, THREADS, UCLM, USS, VAR, VARDEF.


ERREUR 200-322: Le symbole n'est pas reconnu et sera ignoré.




P. Blanchard – Logiciel SAS – Master 2 Recherche
48




Partie II) Approfondissements sur l’étape DATA et les procédures


I ) Approfondissements sur l’étape DATA

1) Lecture d'un fichier externe au format EXCEL

Pour importer (i.e. convertir) un fichier Excel    SAS, il y a de nombreuses possibilités:

    •   Utiliser l'utilitaire d'importation utilisable avec les menus.
    •   Utiliser la procédure PROC IMPORT (cf. plus loin).
    •   Utiliser des logiciels spécialisés (DBMS-copy, STAT-Transfer...).
    •   Utilisation d'ODS (pour l'exportation uniquement). Non traité ici.
    •   Utilisation du DDE. Non traité ici.


Soit le tableau Excel (c:Documents and Settingstab.xls) à importer.

    A            B
1   nomvar1      nomvar2
2   1            a
3   2            b
4   3            c
5   4            d
6   5            e

Vous noterez qu’il est souhaitable qu’il n’y ait pas de colonne et de ligne vides et il faut que les
colonnes aient des intitulés conformes à la syntaxe SAS pour les noms de variables. Si une donnée
est manquante, saisir dans la cellule =NA().

Etape 1 : définir un Libname en exécutant, par exemple, l’instruction suivante dans la fenêtre
Editeur:

LIBNAME moi ‘c:Mes Documents’ ; RUN ;

Etape 2 : Appel du Menu File / Import Data et choisir Microsoft Excel 97 ou 2000 (.xls). Next.

Etape 3 : Avec Parcourir sélectionner le fichier Excel à convertir puis Next.

Etape 4 : Définir Library avec moi et donnez un nom de tableau dans Member. Puis Next.

Etape 5 : Cliquez sur Finish.




P. Blanchard – Logiciel SAS – Master 2 Recherche
49


2) La sélection d'observations dans l’étape DATA


Il y a trois techniques principales de sélection d’observations.

i) L’instruction IF


Exemple n°47.


DATA tab1 ; SET donnees ;                   /* en general on ne met qu’un IF */
      IF annee = 1963 ;
      IF 10 <= age <= 50 ;
      IF ((x1=5) AND (c=20 OR c=25)) ;
      IF annee IN(1989,1991,1993) ;
      IF test ;                                               /* IF test = 1 */
      ...                           /* il peut y avoir d’autres instructions */
RUN ;



Voici une variante.


DATA essai ; SET tableau ;
      IF annee <= 1979 THEN DELETE ;
      pmc = conso/revenu ;...
RUN ;



Exemple n°48.


DATA essai ; SET tableau ;
      IF _N_ <= 1000 ;
      /* ou */
      IF 100 <= _N_ <= 1000 ;
RUN ;




P. Blanchard – Logiciel SAS – Master 2 Recherche
50


ii) L'instruction/option WHERE


Supposons que l’on souhaite faire un calcul statistique en se limitant aux individus de sexe féminin.
On peut faire :

Exemple n°49.



DATA femme ; SET total ; IF sexe = ‘F’ ;                                 /* solution 1, déjà vue     */
RUN ;
/* ou */

DATA femme ; SET total ; WHERE sexe = ‘F’                    ;                /* WHERE = instruction */
RUN ;

/* puis */

PROC MEANS DATA = femme ; RUN ;

/* mieux encore */

PROC MEANS DATA = total ; VAR salaire ; WHERE sexe = 'F' ; RUN ;



NB : avantages de WHERE

    •   Mais surtout, WHERE offre d'autres possibilités, comme par exemple :
               WHERE nom CONTAINS ‘BLANCHARD’ ;
               WHERE salaire BETWEEN 100 AND 100000 ;
               WHERE ident IS MISSING ;
               autres possibilités : LIKE, SAME.
    •   WHERE fonctionne aussi avec les procedures (mais PAS IF).
    •   WHERE en général plus rapide que IF.


                                                   /* NB :       WHERE = option au nom de tableau */

DATA femme (WHERE = (sexe = 'F')) ; SET total ;                       RUN ;

PROC MEANS DATA = total(WHERE=(sexe='F')) ; VAR salaire ;
RUN ;




P. Blanchard – Logiciel SAS – Master 2 Recherche
51


iii) Les options OBS et FIRSTOBS de SET


Les options suivantes sont très intéressantes et ne sont valables que sur le tableau en entrée.


Exemple n°50.


DATA tab1 ; SET donnees (FIRSTOBS=80 OBS = 100 ) ;

/* qui est identique à           */

DATA tab1 ; SET donnees ; IF 80 <= _N _<= 100;



Si l’on veut faire la même chose pour tout le programme SAS, on peut mettre au début du
programme :

Exemple n°51.


OPTIONS FIRSTOBS=80 OBS=100 ;


•   Notez que OBS = 100 ne veut pas dire les 100 suivantes, mais jusqu'à la 100ième.

•   Il faut bien sûr que OBS > FIRSTOBS

•   OPTIONS OBS=MAX FIRSTOBS=1 ; annule OPTIONS ... ;

•   On peut utiliser ces options pour tester un programme d’un point de vue syntaxique sur une
    partie des données avec OPTIONS OBS = 0 ;


Exemple n°52.


DATA tab1 ; SET donnees (OBS = 0 ) ;

/* ou */

PROC MEANS DATA = essai(OBS=0) ; VAR x1 x2 x3 x4 ;




P. Blanchard – Logiciel SAS – Master 2 Recherche
52


3) Les variables de totalisation.



Considérons que l'on dispose de 2 variables dans un tableau SAS (essai1):


A        =       1          10        2            30     44
B        =       1          10        2            .      44

Supposons que l'on veuille créer 2 variables de cumul suma (pour a) et sumb (pour b) plus une
variable donnant le numéro de l'observation (nobs = 1, 2, 3 …).

Une possibilité est d'utiliser l'instruction RETAIN.


Exemple n°53.


DATA essai1     ;    SET essai1 ;
RETAIN nobs     0    suma 0 sumb 0 ;
nobs = nobs     +    1 ;                                                    /* 1 2 3 4 5 */
suma = suma     +    a;                                                  /* 1 11 13 43 87 */
sumb = sumb     +    b ;                      /* 1 11 13 . . (propagation des val. manq.) */




P. Blanchard – Logiciel SAS – Master 2 Recherche
53


4) Les boucles sur les observations et sur les variables


a) Les boucles sur les observations


Exemple n°54.


DATA simul ;                                      /* (pas de SET, c’est rare) */
    DO N = 1 TO 10 ;
       x = UNIFORM(0) ;
       perturb = NORMAL(0) ;
       y = 3 + (-2*x) + perturb ;
       OUTPUT ;              /* (sinon on ne crée que la dernière observation */
                          /* Dans une étape DATA, il y a un OUTPUT implicite */
    END ;
PROC PRINT ; RUN ;



                              Obs         N          x       perturb       y

                                 1       1         0.95395    0.49853   1.59063
                                 2       2         0.23939   -0.94737   1.57385
                                 3       3         0.65603    0.44621   2.13415
                                 4       4         0.85442   -1.12369   0.16746
                                 5       5         0.93359    0.25209   1.38491
                                 6       6         0.86566    0.51277   1.78145
                                 7       7         0.53576   -0.76820   1.16028
                                 8       8         0.36002    0.45920   2.73916
                                 9       9         0.57523    2.42160   4.27114
                                10      10         0.85086    1.68401   2.98230




DO WHILE condition ; action(s) ; END ; /* condition évaluée au début, => au moins 0 itération */

DO UNTIL condition ; action(s) ; END ;/* condition évaluée à la fin, => au moins 1 itération */




P. Blanchard – Logiciel SAS – Master 2 Recherche
54




b) Les boucles sur les variables. C'est très utile car cela permet d'effectuer des traitements
répétitifs sur de nombreuses variables avec peu d'instructions.


Exemple n°55.


DATA temp ; SET temp ;
ARRAY vecvar x1-x12 x14 x1 r40-r55 effec ;
DO OVER vecvar ;
      vecvar = LOG(vecvar) ; /* ttes les var. de vecvar sont passées en log. */
END ;



Exemple n°56.


DATA temp(DROP = i) ; SET temp ;
ARRAY vliste(4) ventes export import invest ;
DO i = 1 TO 4 ;
      vliste(i) = vliste(i) * 1.206 ;                              /* passage en TTC */
END ;




P. Blanchard – Logiciel SAS – Master 2 Recherche
55


5) Les types de variables. Les Labels. Manipulation des chaînes de caractères.


a) Retour sur la création des variables


Lors de l'affectation d'une valeur à une variable, il s'opère quatres opérations purement techniques :

•   une déclaration du type de la variable (caractère/numérique),
•   une définition de la longueur de la variable,
•   l'initialisation de la variable à une certaine valeur (par défaut, valeur manquante).
•   éventuellement association avec un format (cf. plus loin).

Rappelez-vous que SAS ne connaît que les variables numériques (réelles) et les variables de type
chaîne de caractères.


Exemple n°18


DATA temp     ;
INPUT x       nom $       prenom $                 pays $ ;
CARDS ;
      1       moi         jacques                    A
      2       dupont      rené                       1
      f       toto        123                        bb


    •   Pour la première observation (celle qui conditionne le type et la longueur des variables) : x
        vaut 1, nom vaut moi et prenom vaut jacqueset pays vaut A.

    •   Pour la deuxième observation, x vaut 2, nom vaut dup (troncation automatique) et prenom
        vaut rené (pas de troncation). Pays vaut 1.

    •   Pour la troisième observation, x vaut ., nom vaut tot (troncation automatique) et prenom
        vaut 123. Pays vaut b.

/* La solution consiste à faire */

DATA temp ;
LENGTH nom $ 6 prenom $ 7 pays $ 2 ;
INPUT x nom $ prenom $ pays $
CARDS ;
1   moi       jacques        A
2   dupont    rené           1
3   toto      123            bb




P. Blanchard – Logiciel SAS – Master 2 Recherche
56


•   On ne peut pas changer le type d'une variable définie.


•   mais on peut créer une autre variable de type différent




Exemple n°19


Si an est une variable caractère (qui vaut '86', '87', '88' etc.), l’instruction


DATA temp ; SET temp;
IF an = 86 ;


•   SAS effectue automatiquement, quand c’est possible, des conversions de type de variable
    (avec un warning dans le LOG).


Exemple n°20



Si an est une variable caractère (qui vaut '86', '87', '88' etc.), l’instruction


DATA temp ; SET temp;
annee = 0 ; annee = an ;


crée année en numérique.




P. Blanchard – Logiciel SAS – Master 2 Recherche
57


b) Les labels



Exemple n°21


DATA temp ; SET temp;
LABEL pmc = "propension marginale à consommer" ;
pmc = conso/revenu ;


NB :

    •   256 car. maxi pour un label
    •   Attention les éditions peuvent être plus volumineuses
    •   il y a aussi un LABEL pour les tables SAS (option au nom de tableau, moins utile).
    •   un label peut être défini dans une procédure mais il n'est pas alors conservé dans le tableau
        SAS
    •   On peut mettre des caractères accentués dans le LABEL, c'est d'ailleurs un des rares
        endroits où l'on puisse le faire dans SAS (avec les titres et les commentaires).
    •   Néanmoins, avec les noms plus longs de variables avec SAS 8 (32 car.), ceci est moins
        utile.


c) Les chaînes de caractères



Exemple n°22


ville = 'PARIS' ;
IF ville = 'paris' THEN ... ;                                                     /* est faux */

ville = 'PARIS' ;
IF ville > 'paris' THEN ... ;                                                     /* est vrai */




P. Blanchard – Logiciel SAS – Master 2 Recherche
58


7) Concaténation et fusion contrôlée de tableaux SAS


Jusqu’à présent, nous avons utilisé l’instruction SET dans le contexte suivant :

DATA temp ; SET essai ;
etc...

En pratique, les informations dont on a besoin sont fréquemment stockées dans des fichiers (des
tableaux) différents. Comment procéder alors ?



a ) Comment créer plusieurs tableaux dans une seule étape DATA.

Examinons comment créer trois tableaux à partir d'un seul.


Exemple n°23



DATA hommes femmes erreurs ; SET total ;
IF      sexe = ‘F’ THEN OUTPUT femmes ;
ELSE IF sexe = ‘H’ THEN OUTPUT homes ;
ELSE                    OUTPUT erreurs;

PROC PRINT DATA = erreurs ; RUN ;



On peut bien sur faire d’autres opérations dans l’étape DATA.




P. Blanchard – Logiciel SAS – Master 2 Recherche
59


b ) La concaténation (verticale) de tableau SAS par SET.
Considérons les trois tableaux SAS suivants :

Exemple n°24


tab1                tab2                   tab3
nom       age       nom         age        nom     nbannee
B         10        d           40         e       88
A         20        e           50         f       99
C         30


Considérons que nous souhaiterions réunir ces trois tableaux par une opération de concaténation
verticale (les empiler les uns en dessous des autres). Pour cela, il faut faire :

DATA total ; SET tab1 tab2 tab3 ;


Cette instruction procède à une concaténation verticale des trois tableaux telle que le tableau
résultant soit total :

nom       age         nbannee
b         10          .
a         20          .
c         30          .
d         40          .
e         50          .
e         .           88
f         .           99

notez :

-   que le nouveau tableau a autant de colonnes qu'il y avait dans les tableaux tab1, tab2 et tab3 de
    variables ayant des noms différents,

-   que les données des différents tableaux ne sont pas nécessairement triées,

-   que les observations sont complétées par des valeurs manquantes quand une variable est dans
    un tableau et pas dans un autre,

-   que le fait qu'il y ait 2 individus e ne pose pas de pb particulier (sauf si on voulait en ignorer
    un; pb des doublons, cf. plus loin).

-   Que fait : DATA total ; SET tab2 tab1 ;

-   Il peut y avoir autant de tableaux que l'on veut dans cette instruction. Bien sur, il est possible
    d'utiliser les options/instructions DROP, KEEP, WHERE, RENAME, IF, SELECT….



P. Blanchard – Logiciel SAS – Master 2 Recherche
60


Voyons une variante résolvant le problème de nbannee et age :


Exemple n°25


DATA total ; SET tab1 tab2 tab3(RENAME=(nbannee=age)) ;


produit

total

Nom          age
b            10
a            20
c            30
d            40
e            50
e            88
f            99




P. Blanchard – Logiciel SAS – Master 2 Recherche
61


c ) Les fusions contrôlées de tableaux par MERGE ; BY ;
Cette instruction se révèle fondamentale.


i) fusion contrôlée : Supposons que l'on dispose de trois fichiers de données


Exemple n°26



ESE                        EAE                     DDAS
ident         effectif     ident        va         ident       salaire
1             11           2            22         1           13
2             21           3            32         3           33
3             31           5            52         4           43
4             41                                   5           53
                                                   6           63


Si les trois tableaux ne sont pas triés par ident, il faut le faire, à cause de l’utilisation du BY.

PROC SORT DATA = ese ; BY ident ; RUN ;


DATA total ; MERGE ese eae dddas ; BY ident ;



ident        effectif     va           salaire
1            11           .            13
2            21           22           .
3            31           32           33
4            41           .            43
5            .            52           53
6            .            .            63




P. Blanchard – Logiciel SAS – Master 2 Recherche
62


ii) Cylindrage. On ne souhaite conserver que les individus (repérés par leur identifiant)
présents dans les trois fichiers à la fois.


Exemple n°27


                          EAE                      DDAS
ESE
ident        effectif     Ident        va          ident   salaire
1            11           2            22          1       13
2            21           3            32          3       33
3            31           5            52          4       43
4            41                                    5       53
                                                   6       63


DATA cylind ; MERGE ese(in=in1) eae(in=in2) ddas(in=in3) ;
BY ident ;
IF in1 & in2 & in3 ;



ident        effectif     Va           salaire
3            31           32           33




P. Blanchard – Logiciel SAS – Master 2 Recherche
63


d) La gestion des doublons: les options FIRST et LAST.

Soit le tableau total

total

Nom          age
b            10
a            20
c            30
d            40
e            50
e            50
f            99

Considérons que l'individu e soit en doublon. Comment l'éliminer ?

Exemple n°28

PROC SORT DATA = total ; BY nom ;
DATA total1 ; SET total ; BY nom ;
IF FIRST.nom ;


total1 contient :

Nom          age
a            20
b            10
c            30
d            40
e            50
f            99


que produit IF LAST.nom ?




P. Blanchard – Logiciel SAS – Master 2 Recherche
64


II) L'ODS : L'ODS signifie Output Delivery System.

Exemple n°57.


ODS RTF file = 'c:resultat1.rtf' BODYTITLE STYLE = DEFAULT ;
TITLE ; OPTIONS NODATE NONUMBER ;
PROC MEANS ; RUN ;
ODS RTF CLOSE ;
RUN ;



La procédure MEANS


Variable Nb Moyenne Écart-type Minimum Maximum
num          12 6.5000000     3.6055513    1.0000000 12.0000000
revenu       12 8.9166667     2.4293034    5.0000000 14.0000000
conso        11 7.2727273     2.0538213    4.0000000 10.0000000
datenaiss    12   8206.33       4909.87      -1848.00  17115.00



NB:

    •   Le résultat apparait aussi dans l’Output sauf si ODS LISTING CLOSE ;.

    •   On peut sélectionner certains résultats, créer des fichiers au format HTML.

    •   Avantage fondamental : couper/coller sous Word. Les tableaux sont de vrais tableaux.

    •   Attention : si erreur de syntaxe, le fichier sera vide.

    •   On peut essayer différents styles avec STYLE = Analysis, Astronomy, Banker,
        BarrettsBlue, Beige, Brick, Brown, Curve, D3d, Default, EGDefault,
        Education, Electronics, Festival, Gears, Journal, Magnify, Meadow,
        Minimal, Money, NoFontDefault, Normal, Printer, Rsvp, Rtf, Sasweb,
        Science, Seaside, Sketch, Statdoc, Statistical, Theme, Torn, Watercolor,
        blockPrint, fancyPrinter, sansPrinter, sasdocPrinter, serifPrinter.

    •   On peut créer son propre style (complexe).

    •   Les procédures PROC PRINT, PROC REPORT et PROC TABULATE peuvent utiliser les
        styles de manière spécifique avec l’option STYLE=…

    •   BODYTITLE signifie que les titres SAS apparaitront dans le corps du texte et non en en-tête
        sous Word.




P. Blanchard – Logiciel SAS – Master 2 Recherche
65


III) Approfondissements sur les procédures

    A) Lecture d'un fichier externe au format EXCEL : Pour importer (i.e. convertir) un fichier
       Excel  SAS, il y a de nombreuses possibilités.
    • possibilité d'utiliser l'utilitaire d'importation/exportation utilisable avec les menus.
    • Utiliser la procédure PROC IMPORT
    • Utiliser des logiciels spécialisés (DBMS-copy, STAT-Transfer...).
    • Utilisation d'ODS (pour l'exportation uniquement). Non traité ici.

Exemple n°2 : PROC IMPORT/PROC EXPORT

Soit le tableau Excel (tab.xls)

    A              B
1   nomvar1        nomvar2
2   1              a
3   2              b
4   3              c
5   4              d
6   5              e

On peut l'importer en faisant (le module PC-File Format est requis)

LIBNAME in 'c:pierre02' ;
RUN ;

/* import d'un fichier excel vers SAS*/

PROC IMPORT out=in.tabtest1
  DATAFILE ="c:pierre02tab.xls"
  DBMS=excel2000 replace;
  GETNAMES=YES;
RUN;


Pour l'exporter,

LIBNAME in 'c:pierre02' ; RUN ;

/* export d'un tableau SAS vers un fichier excel */

PROC EXPORT DATA= in.tabtest
            OUTFILE= "C:pierre02tab2.xls"
            DBMS=EXCEL2000 REPLACE ;
RUN;


PROC IMPORT peut importer aussi des fichiers ACCESS, DBF, WKS…
PROC EXPORT peut exporter vers des fichiers XLS et ASCII


P. Blanchard – Logiciel SAS – Master 2 Recherche
66




B) La création de tableaux par des procédures : l’instruction OUTPUT OUT . Création d’un
tableau par une procédure : l’exemple de PROC MEANS ;



Considérons le tableau temp (cf. page suivante) qui contient 13 observations pour la variable
revenu notamment.



num nom       sexe csp          revenu conso

1      AA       h   employé         10      9
2      BB       f   cadre           11      7
3      CC       h   ouvrier          5      4
4      DD       h   employé          8      7
5      EE       h   cadre           14     10
6      FF       h   ouvrier          6      4
7      GG       h   ouvrier          7      6
8      HH       f   cadre           11     10
9      II       h   ouvrier          9      8
10     JJ       h   employé          9      8
11     KK       f   employé          8      7
12     LL       h   ouvrier          9      5
13     MM       f   .                .      5




On voudrait connaître



1°) le % que représente le revenu d’un individu de sexe donné par rapport au revenu moyen des
autres individus de même sexe.



2°) le % que représente le revenu d’un individu par rapport au revenu moyen des autres individus.


Comment faire ?




P. Blanchard – Logiciel SAS – Master 2 Recherche
67


Exemple n°29



PROC SORT DATA = temp ; BY sexe ;

PROC MEANS NOPRINT DATA = temp ; BY exe ;
OUTPUT OUT = stat MEAN(revenu) = mrevenu ;

PROC PRINT DATA = stat ; RUN ;

DATA temp1 ; MERGE temp stat ; BY sexe ;
prev = revenu/mrevenu ;
RUN ;

PROC PRINT ; VAR nom sexe revenu mrevenu prev ; RUN ;



Obs        sexe          _TYPE_           _FREQ_     mrevenu

 1           f                0                4     10.0000
 2           h                0                9      8.5556



Obs        nom         sexe          revenu        mrevenu      prev

  1        BB            f              11         10.0000     1.10000
  2        HH            f              11         10.0000     1.10000
  3        KK            f               8         10.0000     0.80000
  4        MM            f               .         10.0000      .
  5        AA            h              10          8.5556     1.16883
  6        CC            h               5          8.5556     0.58442
  7        DD            h               8          8.5556     0.93506
  8        EE            h              14          8.5556     1.63636
  9        FF            h               6          8.5556     0.70130
 10        GG            h               7          8.5556     0.81818
 11        II            h               9          8.5556     1.05195
 12        JJ            h               9          8.5556     1.05195
 13        LL            h               9          8.5556     1.05195




P. Blanchard – Logiciel SAS – Master 2 Recherche
68


Exemple n°30

PROC MEANS NOPRINT ; VAR revenu ; ;
OUTPUT OUT = stat1 MEAN(revenu) = mrevenu ;
PROC PRINT dATA = stat1 ; RUN ;

DATA temp ; SET temp ; ind = 1 ;
DATA stat1 ; SET stat1 ; ind = 1 ;

DATA temp2 ; MERGE temp stat1 ; BY ind ;
prevtot = revenu/mrevenu ;

PROC PRINT ; VAR nom sexe revenu mrevenu prevtot ; RUN ;



Obs         _TYPE_          _FREQ_           mrevenu
 1             0              13             8.91667

Obs         nom        sexe          revenu        mrevenu       prevtot
  1         BB          f              11          8.91667       1.23364
  2         HH          f              11          8.91667       1.23364
  3         KK          f               8          8.91667       0.89720
  4         MM          f               .          8.91667        .
  5         AA          h              10          8.91667       1.12150
  6         CC          h               5          8.91667       0.56075
  7         DD          h               8          8.91667       0.89720
  8         EE          h              14          8.91667       1.57009
  9         FF          h               6          8.91667       0.67290
 10         GG          h               7          8.91667       0.78505
 11         II          h               9          8.91667       1.00935
 12         JJ          h               9          8.91667       1.00935
 13         LL          h               9          8.91667       1.00935

A noter :

• Vous noterez l'interprétation de _FREQ_ (le nombre d'individus de chaque sous population).

• CLASS est préférable à BY car pas de tri nécessaire avant (nb max de var. de class. = 30).

• Les résultats sont présentés différemment, cf. _TYPE_ pour sélectionner le niveau d'agrégation.

• Avec NOPRINT, rien n’est affiché dans l’Output. Pour visualiser le résultat, il faut faire :
  PROC PRINT DATA = result ;

•   Avec plusieurs variables, cela marche aussi.


P. Blanchard – Logiciel SAS – Master 2 Recherche
69


C) Les procédures PROC FORMAT, PROC FREQ et PROC TABULATE


1) L’instruction PROC FORMAT


Exemple n°50


PROC FORMAT LIBRARY = in ;

VALUE $fsexe
   "m", "M", "h", "H" = "Homme"
   "f", "F" = "Femme" ;

VALUE fage
   0-17 = "- de 18 ans"
   18-59 = "18-59 ans"
   60-HIGH = "retraité" ;

VALUE fchoix
   1 = "oui"
   2 = "non"
   0,3-9 = "ND" ;

VALUE fzero
   LOW - <0 = '<0'
   0         = ' 0'
   0< - HIGH = '>0' ;

RUN ;



Notez que cette façon de faire permet en quelque sorte de recoder à peu de frais les variables
numériques. C'est un de ces grands avantages.


Ensuite, on l’utilise dans une procédure (PROC MEANS, PROC GCHART, PROC FREQ…).




P. Blanchard – Logiciel SAS – Master 2 Recherche
70


Exemple n°51



/* on suppose que PROC FORMAT dans le pgm */

DATA essai ;
INPUT sexe $ age choix ;
CARDS ;
m   11   1
f   21   2
m   31   3
f   41   2
H   12   1                                     /* attention : on a H */
m   22   1
f   32   0
f   42   1
m   13   2
m   23   .
.   33   2
m   43   1
;

PROC FREQ ;
  TABLE sexe*age sexe*choix / NOROW NOCUM ;
  FORMAT age fage. choix fchoix. sexe $fsexe.;
RUN ;




NB : Que se passerait-il sans l’instruction FORMAT … ;       ???




P. Blanchard – Logiciel SAS – Master 2 Recherche
71



Table of sexe by age

Frequency‚
Percent ‚- de 18 ans ‚18-59 ans‚                   Total
ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒˆ
Homme    ‚      3      ‚     4 ‚                       7
         ‚ 27.27       ‚ 36.36 ‚                   63.64
ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒˆ
Femme    ‚      0      ‚     4 ‚                       4
         ‚        0.00 ‚ 36.36 ‚                   36.36
ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒˆ
Total           3         8                           11
            27.27     72.73                        100.00

Frequency Missing = 1




Table of sexe by choix

Frequency‚
Percent ‚ND       ‚oui     ‚non     ‚ Total
ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ
Homme    ‚      1 ‚      4 ‚      1 ‚      6
         ‚ 10.00 ‚ 40.00 ‚ 10.00 ‚ 60.00
ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ
Femme    ‚      1 ‚      1 ‚      2 ‚      4
         ‚ 10.00 ‚ 10.00 ‚ 20.00 ‚ 40.00
ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ
Total           2        5        3       10
            20.00    50.00    30.00   100.00

Frequency Missing = 2




P. Blanchard – Logiciel SAS – Master 2 Recherche
72


2) L’instruction PROC TABULATE


Voici un petit exemple donnant une idée ce que qu'elle permet (sur les donnée de csp/sexe):


Exemple n°52



PROC FORMAT LIBRARY = work ;
VALUE $fsexe
   "h" = "Homme"
   "f" = "Femme" ;

PROC TABULATE DATA = test ; CLASS sexe csp ;
VAR revenu ;
TABLE sexe ALL , (csp ALL)*revenu*(MEAN N) / RTS = 16 ;
FORMAT sexe $fsexe.;
RUN ;




P. Blanchard – Logiciel SAS – Master 2 Recherche
„ƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ†
‚          ‚                                     csp                                      ‚                        ‚
‚          ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‰
‚          ‚          cadre          ‚         employé         ‚         ouvrier          ‚          All           ‚
‚          ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‰
‚          ‚         revenu          ‚         revenu          ‚         revenu           ‚        revenu          ‚
‚          ‡ƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒ‰
‚          ‚     N      ‚    Mean    ‚     N      ‚    Mean    ‚     N      ‚    Mean     ‚    N      ‚    Mean    ‚
‡ƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰
‚sexe      ‚            ‚            ‚            ‚            ‚            ‚             ‚           ‚            ‚
‡ƒƒƒƒƒƒƒƒƒƒ‰            ‚            ‚            ‚            ‚            ‚             ‚           ‚            ‚
‚Femme     ‚        2.00‚       11.00‚        1.00‚        8.00‚           .‚            .‚       3.00‚       10.00‚
‡ƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰
‚Homme     ‚        1.00‚       14.00‚        3.00‚        9.00‚        5.00‚         7.20‚       9.00‚        8.56‚
‡ƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰
‚All       ‚        3.00‚       12.00‚        4.00‚        8.75‚        5.00‚         7.20‚      12.00‚        8.92‚
Šƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒŒ
Trsas
Trsas
Trsas
Trsas
Trsas
Trsas
Trsas

Weitere ähnliche Inhalte

Ähnlich wie Trsas

B5151 g formation-ibm-cognos-analysis-studio-analyze-data-v10-1-10-2
B5151 g formation-ibm-cognos-analysis-studio-analyze-data-v10-1-10-2B5151 g formation-ibm-cognos-analysis-studio-analyze-data-v10-1-10-2
B5151 g formation-ibm-cognos-analysis-studio-analyze-data-v10-1-10-2CERTyou Formation
 
Esc5 g formation-mise-a-jour-de-z-os-v1r12-vers-v1r13
Esc5 g formation-mise-a-jour-de-z-os-v1r12-vers-v1r13Esc5 g formation-mise-a-jour-de-z-os-v1r12-vers-v1r13
Esc5 g formation-mise-a-jour-de-z-os-v1r12-vers-v1r13CERTyou Formation
 
0 g416g formation-programmation-en-syntaxe-ibm-spss-statistics-niveau-ii
0 g416g formation-programmation-en-syntaxe-ibm-spss-statistics-niveau-ii0 g416g formation-programmation-en-syntaxe-ibm-spss-statistics-niveau-ii
0 g416g formation-programmation-en-syntaxe-ibm-spss-statistics-niveau-iiCERTyou Formation
 
Zz670 g formation-ibm-infosphere-mdm-reference-data-management-v10
Zz670 g formation-ibm-infosphere-mdm-reference-data-management-v10Zz670 g formation-ibm-infosphere-mdm-reference-data-management-v10
Zz670 g formation-ibm-infosphere-mdm-reference-data-management-v10CERTyou Formation
 
Work placement bachelor's degree computer science_2009
Work placement bachelor's degree computer science_2009Work placement bachelor's degree computer science_2009
Work placement bachelor's degree computer science_2009MRamo2s
 
Alphorm.com Formation Data science avec R - Prise en main des IDE
Alphorm.com Formation Data science avec R - Prise en main des IDEAlphorm.com Formation Data science avec R - Prise en main des IDE
Alphorm.com Formation Data science avec R - Prise en main des IDEAlphorm
 
Ppe 1 logiciel de supervision
Ppe 1 logiciel de supervisionPpe 1 logiciel de supervision
Ppe 1 logiciel de supervisionQuentinVERY
 
Ensemble complet-eon
Ensemble complet-eonEnsemble complet-eon
Ensemble complet-eonhayet nasri
 
Matinale Technologique SAS
Matinale Technologique SASMatinale Technologique SAS
Matinale Technologique SASSoft Computing
 
Es19 g formation-les-bases-de-l-administration-de-racf-z-os
Es19 g formation-les-bases-de-l-administration-de-racf-z-osEs19 g formation-les-bases-de-l-administration-de-racf-z-os
Es19 g formation-les-bases-de-l-administration-de-racf-z-osCERTyou Formation
 
0 g522g formation-gestion-et-manipulation-des-donnees-avec-ibm-spss-statistic...
0 g522g formation-gestion-et-manipulation-des-donnees-avec-ibm-spss-statistic...0 g522g formation-gestion-et-manipulation-des-donnees-avec-ibm-spss-statistic...
0 g522g formation-gestion-et-manipulation-des-donnees-avec-ibm-spss-statistic...CERTyou Formation
 
0 g406g formation-programmation-en-syntaxe-ibm-spss-statistics-niveau-i
0 g406g formation-programmation-en-syntaxe-ibm-spss-statistics-niveau-i0 g406g formation-programmation-en-syntaxe-ibm-spss-statistics-niveau-i
0 g406g formation-programmation-en-syntaxe-ibm-spss-statistics-niveau-iCERTyou Formation
 
conception et création une base de donnée de réservation de vol
conception et création une base de donnée de réservation de vol conception et création une base de donnée de réservation de vol
conception et création une base de donnée de réservation de vol sara bada
 
Dt205 g formation-using-infosphere-optim-data-growth-for-archiving-on-distrib...
Dt205 g formation-using-infosphere-optim-data-growth-for-archiving-on-distrib...Dt205 g formation-using-infosphere-optim-data-growth-for-archiving-on-distrib...
Dt205 g formation-using-infosphere-optim-data-growth-for-archiving-on-distrib...CERTyou Formation
 
Be87 g formation-administration-efficace-de-racf
Be87 g formation-administration-efficace-de-racfBe87 g formation-administration-efficace-de-racf
Be87 g formation-administration-efficace-de-racfCERTyou Formation
 
CV Template Jun 15 WD French - Jeremie Simonet
CV Template Jun 15 WD French - Jeremie SimonetCV Template Jun 15 WD French - Jeremie Simonet
CV Template Jun 15 WD French - Jeremie SimonetJérémie Simonet
 

Ähnlich wie Trsas (20)

B5151 g formation-ibm-cognos-analysis-studio-analyze-data-v10-1-10-2
B5151 g formation-ibm-cognos-analysis-studio-analyze-data-v10-1-10-2B5151 g formation-ibm-cognos-analysis-studio-analyze-data-v10-1-10-2
B5151 g formation-ibm-cognos-analysis-studio-analyze-data-v10-1-10-2
 
Esc5 g formation-mise-a-jour-de-z-os-v1r12-vers-v1r13
Esc5 g formation-mise-a-jour-de-z-os-v1r12-vers-v1r13Esc5 g formation-mise-a-jour-de-z-os-v1r12-vers-v1r13
Esc5 g formation-mise-a-jour-de-z-os-v1r12-vers-v1r13
 
0 g416g formation-programmation-en-syntaxe-ibm-spss-statistics-niveau-ii
0 g416g formation-programmation-en-syntaxe-ibm-spss-statistics-niveau-ii0 g416g formation-programmation-en-syntaxe-ibm-spss-statistics-niveau-ii
0 g416g formation-programmation-en-syntaxe-ibm-spss-statistics-niveau-ii
 
Visite des lycées
Visite des lycéesVisite des lycées
Visite des lycées
 
Zz670 g formation-ibm-infosphere-mdm-reference-data-management-v10
Zz670 g formation-ibm-infosphere-mdm-reference-data-management-v10Zz670 g formation-ibm-infosphere-mdm-reference-data-management-v10
Zz670 g formation-ibm-infosphere-mdm-reference-data-management-v10
 
Work placement bachelor's degree computer science_2009
Work placement bachelor's degree computer science_2009Work placement bachelor's degree computer science_2009
Work placement bachelor's degree computer science_2009
 
rapport
rapportrapport
rapport
 
Alphorm.com Formation Data science avec R - Prise en main des IDE
Alphorm.com Formation Data science avec R - Prise en main des IDEAlphorm.com Formation Data science avec R - Prise en main des IDE
Alphorm.com Formation Data science avec R - Prise en main des IDE
 
Ppe 1 logiciel de supervision
Ppe 1 logiciel de supervisionPpe 1 logiciel de supervision
Ppe 1 logiciel de supervision
 
Ensemble complet-eon
Ensemble complet-eonEnsemble complet-eon
Ensemble complet-eon
 
Matinale Technologique SAS
Matinale Technologique SASMatinale Technologique SAS
Matinale Technologique SAS
 
Es19 g formation-les-bases-de-l-administration-de-racf-z-os
Es19 g formation-les-bases-de-l-administration-de-racf-z-osEs19 g formation-les-bases-de-l-administration-de-racf-z-os
Es19 g formation-les-bases-de-l-administration-de-racf-z-os
 
CV_AmmarSassi
CV_AmmarSassiCV_AmmarSassi
CV_AmmarSassi
 
0 g522g formation-gestion-et-manipulation-des-donnees-avec-ibm-spss-statistic...
0 g522g formation-gestion-et-manipulation-des-donnees-avec-ibm-spss-statistic...0 g522g formation-gestion-et-manipulation-des-donnees-avec-ibm-spss-statistic...
0 g522g formation-gestion-et-manipulation-des-donnees-avec-ibm-spss-statistic...
 
0 g406g formation-programmation-en-syntaxe-ibm-spss-statistics-niveau-i
0 g406g formation-programmation-en-syntaxe-ibm-spss-statistics-niveau-i0 g406g formation-programmation-en-syntaxe-ibm-spss-statistics-niveau-i
0 g406g formation-programmation-en-syntaxe-ibm-spss-statistics-niveau-i
 
conception et création une base de donnée de réservation de vol
conception et création une base de donnée de réservation de vol conception et création une base de donnée de réservation de vol
conception et création une base de donnée de réservation de vol
 
Dt205 g formation-using-infosphere-optim-data-growth-for-archiving-on-distrib...
Dt205 g formation-using-infosphere-optim-data-growth-for-archiving-on-distrib...Dt205 g formation-using-infosphere-optim-data-growth-for-archiving-on-distrib...
Dt205 g formation-using-infosphere-optim-data-growth-for-archiving-on-distrib...
 
Automat-wd.info utilisation des outils bureautiques
Automat-wd.info utilisation des outils bureautiquesAutomat-wd.info utilisation des outils bureautiques
Automat-wd.info utilisation des outils bureautiques
 
Be87 g formation-administration-efficace-de-racf
Be87 g formation-administration-efficace-de-racfBe87 g formation-administration-efficace-de-racf
Be87 g formation-administration-efficace-de-racf
 
CV Template Jun 15 WD French - Jeremie Simonet
CV Template Jun 15 WD French - Jeremie SimonetCV Template Jun 15 WD French - Jeremie Simonet
CV Template Jun 15 WD French - Jeremie Simonet
 

Trsas

  • 1. UNIVERSITE PARIS XII VAL DE MARNE FACULTE DE SCIENCES ECONOMIQUES ET DE GESTION Master 2 Recherche Economie Appliquée Le logiciel SAS 1ère partie P. Blanchard blanchard@univ-paris12.fr ERUDITE http://www.univ-paris12.fr/www/labos/erudite Septembre 2006
  • 2. 2 Plan du cours Partie I – Introduction à l’étape DATA et aux procédures 1) L'interface SAS sous Windows 2) Notre premier programme. Eléments du langage SAS. 3) Introduction à l’étape DATA • Création/modification d'un tableau SAS • Création et modification des variables • Sélection de variables 4) Introduction aux principales procédures • Les procédures utilitaires : PROC PRINT et PROC CONTENTS • Les procédures statistiques : PROC MEANS, PROC FREQ et PROC CORR • Les instructions BY/CLASS et la procédure PROC SORT • Les procédures graphiques : Proc GCHART, PROC GPLOT • Les procédures économétriques : PROC REG et PROC AUTOREG 5) Présentation du programme, de l’OUTPUT et du LOG Partie II – Approfondissements sur l’étape DATA et les procédures 1) Approfondissements sur l’étape DATA • Création d'un tableau à partir d'un fichier externe au format ASCII ou EXCEL • Sélection des variables et des observations • Les instructions de totalisation • Les boucles sur les variables et sur les observations • Manipulation des variables chaîne de caractères. Les labels • Concaténation et fusion contrôlée de tableaux 2) Approfondissements les procédures • Importation et exportation d’un fichier au format XLS • La création de tableaux par une procédure • La procédure PROC FORMAT • PROC TABULATE Annexes : Informats, Formats et fonctions P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 3. 3 Introduction I) Informations pratiques P. Blanchard, bureau 218, tel: 01 41 78 46 49, email: blanchard@univ-paris12.fr Pré-requis à ce cours: Windows. Documentation SAS : officielle, INSEE, BDF, Internet… Bibliographie (par niveau croissant de difficulté). • L. D. Delwiche & S. J. Slaughter, The Little SAS Book : A Primer, 2003, SAS Institute. • E. Duguet, Introduction à SAS, Economica, 2004. • R. Aster, Professional SAS Programming Shortcuts, Breakfast, 2002, 1st edition. Les fichiers de données et de programmes pour les exercices peuvent être téléchargés sur la page WEB: http://www.univ-paris12.fr/www/labos/erudite/membres/pb/etrie.html SAS (http://www.sas.com/france) propose une licence gratuite pour les étudiant(e)s suivant une formation SAS et organise aussi un Master’s club.. Il existe aussi une liste de discussion pour SAS LISTSERV@LISTSERV.UGA.EDU Cours/td : 18h + 4 td de 1.5h Questions/réponses P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 4. 4 FORMULAIRE LICENCE GRATUITE A DOMICILE « ETUDIANT » Doit être complété par l’étudiant et remis à son professeur qui l’adressera au CRI Diffuseur BENEFICIAIRE fi Mme fi Mlle fi M. Nom* : Prénom* : Adresse personnelle* : Code Postal* : Ville* : Téléphone* : E.mail* : Date probable de fin d’études* : Centres d’intérêt professionnels* : ETABLISSEMENT Nom* : Université Paris XII Val de Marne – Faculté de Sciences Economiques et de Gestion Département/Filière* : Département d’Economie Professeur(s) enseignant SAS* : Pierre Blanchard Diplôme (intitulé)* : Master 2 Recherche Logiciel(s) SAS enseigné(s)* : SAS 9.1 Adresse* : 61 avenue du Général de Gaulle Code Postal* : 94010 Ville* : Créteil cédex « Je suis étudiant à l’Université Paris XII val de Marne et SAS fait partie intégrante de mon cursus. J’ai adhéré au Masters’ Club de l’Academic Program, en complétant le formulaire d’adhésion ou de renouvellement sur http://www.sas.com/france/academic Je m’engage à installer les logiciels SAS® sur mon ordinateur, situé à mon adresse personnelle, renseignée ci-dessus, à n’utiliser les Logiciels que pour un usage personnel et pédagogique à but non lucratif, à n’effectuer aucune copie desdits Logiciels et à ne jamais les utiliser dans un environnement professionnel (ex. : stage). Je reconnais que la société SAS Institute Inc., Cary, Caroline du Nord, USA, est propriétaire, au sens du Code de la Propriété Intellectuelle, des Logiciels et de sa documentation. Je suis informé qu’en cas d’atteinte avérée aux droits de propriété intellectuelle de SAS, j’encourre une indemnité à payer à SAS de 1000 (mille) euros » La licence gratuite est composée des Progiciels Base SAS®, SAS/ETS®, SAS/GRAPH®, SAS/STAT®, SAS/IML®, SAS/INSIGHT®, SAS/Enterprise Guide®, SAS/QC® et SAS/ACCESS® TO PC FILE FORMATS sur poste client Windows. Date et Signature de l’étudiant : Signature Professeur CADRE RESERVE A SAS Réf4 : Site : Date de Licence : * Informations obligatoires * Les présentes informations sont nécessaires aux fins de permettre la mise à disposition du Progiciel à l'Utilisateur. Seul SAS est destinataire des informations que vous nous communiquez. Certaines informations peuvent ponctuellement être partagées avec nos partenaires. Conformément à la loi Informatique et Libertés du 6 janvier 1978, vous disposez d'un droit d'accès, d'opposition et de modification sur les données qui vous P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 5. 5 concernent. Pour l'exercer, n'hésitez pas à vous adresser à : Responsable CNIL - SAS Institute France - Domaine de Grégy - BP5 – F-77166 Grégy-sur-Yerres ou à envoyer un mail à acces_donnees@fra.sas.com.". P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 6. 6 II ) Les caractéristiques essentielles de SAS 1. Le sigle SAS signifie Statistical Analysis System et se prononce SASSE et non S.A.S. La société SAS a été fondé en 1976 par J. Goodnight. 2. SAS est un logiciel qui a pour ambition de couvrir toutes les étapes du traitement des données. SAS est donc un logiciel de gestion et d’analyse statistique des données. 3. SAS est principalement un logiciel de traitement de données individuelles peu orienté vers le traitement des séries temporelles. 4. SAS est proposé sous la forme de modules. Par ailleurs, SAS ne s'achète pas, il se loue à l'année (fichier SID.TXT). cf. page suivante pour l’installation 5. SAS existe pour pratiquement tous les types d'ordinateurs et tous les systèmes d'exploitation. P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 7. 7 NOTES POUR L'INSTALLATION DE SAS-LICENCE GRATUITE ETUDIANT V 9.1 Si une ancienne version de SAS est déjà installée, il vaut mieux la désinstaller. 1°) Mettez le CD SAS. L'installation se lance automatiquement. Si elle ne démarre pas, exécuter le programme SETUP.EXE qui est sur le CD. 2°) Utiliser les choix du menu pour END USERS STEP. a) Optionnel : Vérifiez tout d’abord votre système en cliquant sur « verify system requirements » ) b) cliquez sur « install sas system » Attention : pour certains portables, il peut y avoir des problèmes d’installation. Cf. le mail reproduit à la fin du document. A partir de là, plusieurs fenêtres de dialogue vont apparaître (entre 8 et 10), répondez à chaque fois « suivant » Sauf quand SAS va vous demandez un fichier SID. Taper (ou faites apparaître avec parcourir) dans la fenêtre indiquée D:SID.TXT Ce fichier est sur le CD-ROM. 3°) Si SAS vous pose une question sur les extensions de nom de fichier, cochez la case : utiliser cette réponse pour tous les types, puis cliquez sur « oui » 7°) au message, « installation terminée » cliquez sur « Fin » Quand l'installation est terminée SAS est installé dans c:PROGRAM FILESSASSAS 9.1 Pour lancer SAS, faites Démarrer Programmes SAS puis SAS 9.1 En cas de problème Vous devez arrêter l'anti-virus, le firewall, et être connecté en tant qu'administrateur. 1. Exécuter les pré-requis : D:srwbundlesvcredst7setup.exe. 2. Télécharger puis installer les Run-Time http://www.microsoft.com/downloads/release.asp?ReleaseID=28337 3. Puis installer SAS en outrepassant les pré-requis : D:sassetup.exe nomsupdate où D: est le lecteur de CD-Rom. Si cela échoue, essayez avec cette syntaxe : "D:sassetup.exe nomsupdate" P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 8. 8 Partie I) Introduction à l’étape DATA et aux procédures 1) L'interface SAS sous Windows • Notre version de SAS est la version 9.1 et fonctionne sous WINDOWS XP/2000/Me/NT. • L'interface sous WINDOWS (version anglaise/française). • Utilisation: mode menu ou programme. Autres fenêtres utiles. Attention: sous SAS, il y a deux éditeurs, le Enhanced Program Editor (le plus utile) et le Program Editor. P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 9. 9 2) Notre premier programme Le tableau donnees nom revenu conso AA 22.3 19.9 BB 30.3 10.1 etc. Exemple n°1. DATA essai ; SET donnees ; lconso = LOG(conso) ; lrev = LOG(revenu) ; RUN ; PROC PRINT DATA = essai ; RUN ; DATA essai ; SET essai ; pmc = conso/revenu ; RUN ; PROC REG DATA = essai ; MODEL lconso = lrev / DW; RUN ; QUIT ; PROC MEANS DATA = essai N MEAN MIN MAX NMISS ; VAR revenu conso pmc ; RUN ; Quels principes pour SAS ? P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 10. 10 PROC. A) Un programme SAS se compose d'une suite d'étapes DATA et de PROC Notre programme se compose de deux étapes DATA et de trois étapes PROC. • L'étape DATA a pour objet de créer ou de modifier un tableau (on dit aussi une table) de données (stocké dans un fichier de données SAS, temporaire ou permanent). • Une étape PROC a pour objet d'utiliser un tableau SAS existant pour en faire une analyse (statistique, graphique, économétrique…). Etape DATA Etape PROC Commence par DATA Commence par PROC Lit des données Effectue une analyse statistique, graphique… Crée ou modifie des variables/observations Crée ou modifie un tableau Se termine par RUN, DATA ou PROC Se termine par RUN, QUIT, DATA ou PROC DATA essai ; SET donnees ; | lconso = LOG(conso) ; | lrev = LOG(revenu) ; | Etape DATA RUN ; | PROC PRINT DATA = essai ; | Etape PROC RUN ; | - Un tableau SAS peut être utilisé par une ou plusieurs étapes DATA et/ou PROC. - Une instruction DATA ou PROC est terminée dans 2 cas: - Une instruction RUN est généralement mise à la fin de chaque étape DATA ou PROC. - Elle permet d’exécuter un bloc d’instructions à l’aide de la souris sans nécessairement exécuter la totalité du programme. C’est une bonne idée pour mettre un programme au point par petit bout. PROC PRINT DATA = essai ; RUN ; - Il n'y a pas de END à la fin d’un programme (ne pas mettre ENDSAS ;). Par contre, on mettra un RUN ; sinon, la dernière instruction ne sera pas exécutée (ou pas au bon moment). P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 11. 11 B) On distingue les instructions d’appel, les instructions, les options des instructions d'appel, les options des instructions, les variables, les tableaux et les fonctions. • Les instructions d’appel sont DATA ou PROC. • Les instructions de l’instruction d’appel sont parfois obligatoires (par exemple MODEL), parfois facultatives (par exemple VAR) selon les cas. • Par définition, les options peuvent ne pas être spécifiées (options par défaut). Attention, il y a deux types d’options : les options de l’instruction d’appel et les options des instructions. • Les instructions, les noms des variables et des tableaux peuvent être spécifiées en minuscules, en majuscules ou dans un mélange des deux. • Il peut y avoir plusieurs d’instructions dans une instruction d’appel. L'ordre des instructions dans une PROC (ou dans DATA) est indifférent. Idem pour les options. • /* … */ permet d’introduire des commentaires dans le programme. Très utile. Exemple n°2. PROC PRINT ; RUN ; /* correct */ PROC MEANS DATA = temp ; RUN ; PROC REG ; RUN ; /* incorrect */ PROC REG DATA = temp SIMPLE ; /* instructions et options */ MODEL y = x1 x2 x3 /DW COVB STB ; TEST x1 = 1 ; RUN ; QUIT ; P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 12. 12 C) Les principales règles syntaxiques Chaque instruction se termine par un ; Les instructions, les variables, les fonctions… peuvent être écrites en minuscules ou majuscules. Une instruction peut être écrite sur plusieurs lignes. Une instruction peut commencer à n’importe quelle colonne. L'espace est le caractère séparateur entre les instructions, les options, les variables ou les noms de tableau. L’oubli du ; est l’erreur la plus fréquente dans un programme SAS. Cette erreur peut être difficile à détecter. • Vous noterez que le ; sépare les instructions d’appel et les instructions entre elles (mais pas de ; entre les instructions et les options). • Par contre, mettre deux points-virgule ne génère aucune erreur (= 1 instruction vide). • Plusieurs instructions peuvent se trouver sur la même ligne. • Néanmoins, il vaut mieux aérer le programme avec les lignes vides. • Une instruction commence et finit à n’importe quelle colonne d’une ligne donnée. Ceci permet d’utiliser l'indentation pour isoler l'instruction d'appel des instructions qui en font partie. Exemple n° 3. PROC PRINT DATA = temp ; RUN ; PROC MEANS DATA = temp ; RUN ; /* ou */ PROC PRINT DATA = temp ; RUN ; PROC MEANS DATA = temp ; RUN ; PROC PRINT DATA = temp ; /* pas PROC P RINT ; */ RUN ; PROC MEANS DATA = temp ; /* stat. des. par année */ BY annee ; VAR conso revenu ; RUN ; P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 13. 13 D) Les tableaux SAS et les variables • Un tableau SAS peut être crée soit dans une étape DATA soit dans une étape PROC. Un tableau SAS comporte une ligne par observation et une colonne par variable: Obs Nomvar1 Nomvar2 … Nomvark 1 4 1268.2 Texte 1 2 4.2 -2 Texte 2 … • Un tableau SAS est stocké dans un fichier (temporaire ou permanent) dont l’extension est la plupart du temps .sas7bdat (V8/V9). • Un tableau SAS peut contenir 2 types de variables : des variables numériques ou chaînes de caractères. (Attention, une fois qu’une variable a été définie numérique ou caractère, elle ne peut changer de type). - i) Les valeurs numériques, par exemple 5.31, 1.4E13 et 8 sont des valeurs numériques correctes. SAS ne fait pas de différence entre les entiers et les réels (1 ou 1.0). Une valeur manquante est notée par un point (•) et peut résulter d’un calcul (x=log(0)) ou d’une affectation ( x = • ). - ii) Les variables chaînes de caractères dont le contenu est entré entre apostrophes ou guillemets et dont la longueur est au maximum de 32767 car. (V8/V9). Une valeur manquante est notée par un une chaine vide (rep1 = '' ;). - iii) Pour créer une variable logique (0/1), il faut le faire sous la forme d'une variable numérique ou d'une chaîne de caractères. • Les noms des variables et des tableaux ont de 1 à 32 caractères et sont composés de lettres, de chiffres et du blanc souligné ( _ ). Le premier caractère doit être impérativement une lettre ou le blanc souligné. Les caractères accentués ne sont pas admis. Idem pour les symboles spéciaux &, *, $, % ... rep1 = 'OUI' ; rep2 = 'oui' ; rep3 = "OUI" ; rep3 = ‘d’’accord’ ; cc = '123' ; /* attention aux apostrophes/guillemets non balancés / Exemples de noms de variables corrects ou incorrects : pnb_fr , x1 , y , numtelephone , 1pb , bizarre , _123 , moi , keynes , x$ , taux% , a&b , télé, _mes erreur P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 14. 14 • Fonctionnement de l’étape DATA L’instruction DATA est une boucle sur le tableau. DATA essai ; SET mesdonnees ; lconso = LOG(conso) ; lrev = LOG(revenu) ; RUN ; Données en Etape DATA Tableau SAS entrée (tableau crée (essai) mesdonnees) Obs 1 Instruction 1 Obs 1 Obs 2 Obs 2 Obs 3 Instruction 2 Obs 3 … … Instruction 3 … P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 15. 15 E) Les librairies SAS Exemple n°4. DATA temp ; SET donnees ; ... RUN ; Définir un LIBNAME revient à assigner un nom physique de répertoire à un nom logique de librairie. C’est le nom logique (une sorte de synonyme) qui sera utilisé dans le programme SAS. Exemple n°5. LIBNAME malib 'E:Mes Documents' ; RUN; /* une partie des étapes DATA est reproduite */ DATA deux ; SET malib.donnees ; ... DATA malib.deux ; SET malib.donnees ; ... DATA malib.un ; SET deux ; ... DATA un ; SET deux ; ... DATA work.un ; SET work.deux ; ... On suppose que tous les tableaux des SET et le répertoire MES Documents existent. 1. Le LIBNAME assigne la librairie logique « malib » au répertoire « Mes Documents » du disque dur E : (minuscules = majuscules sous DOS/Windows). Le nom logique (malib) doit avoir 8 caractères maxi mais le nom du tableau peut avoir 32 car. maximum. 2. En effet, SAS tourne sur des ordinateurs dont les conceptions en terme de stockage sur disque diffèrent (façon d’accéder à un répertoire d’un disque). NB: P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 16. 16 • Où est la librairie par défaut ? proc contents • L’utilisation de plusieurs LIBNAME est possible mais pas souvent utile. • On peut aussi définir une librairie ave l'icône NEW LIBRARY ou avec l'EXPLORER. • Les tableaux SAS sont stockés sur disque sous la forme de fichiers de données de SAS et ont l'extension .SD2 (V6) ou sas7bdat (V8-V9) sur micro-ordinateurs. • LIBNAME in V6 "c:vieuxfichiers" ; RUN ; pour des lire des tableaux SAS version 6. • Dans la documentation SAS, une table SAS est souvent appelée un "member" (un membre d’une librairie). • Il est possible de faire (mais non conseillé): DATA deux ; SET 'C:Mes Documentsdonnees’ ; /* sans extension */ ... DATA 'C:Mes Documentsdeux’ ; SET 'C:Mes Documentsdonnees’; ... PROC PRINT DATA = 'C:Mes Documentsdeux’ ; RUN ; DATA ‘deux’ ; SET malib.donnees ; P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 17. 17 3) Introduction à l'étape DATA L'étape DATA sert à préparer des données qui seront stockées dans un tableau pour une analyse ultérieure (PROC). Elle a donc pour objet de créer ou modifier un tableau SAS en créant ou modifiant des variables et/ou des observations. L’étape DATA opère soit sur des tableaux SAS déjà existants, soit sur des données présentes dans le programme lui-même (dites données dans le flot d'entrée), soit sur des fichiers crées par certains logiciels (pas Excel). A) Création/modification d'un tableau SAS a) Création d’un nouveau tableau à partir d’un autre tableau SAS. Exemple n°6. DATA regress1 ; SET datac ; lconso = LOG(conso) ; lrevenu = LOG(revenu) ; RUN ; PROC PRINT DATA = regress1 ; VAR lconso lrevenu ; RUN ; /* DATA = regress1 optionnel */ b) Modification d’un tableau existant Exemple n°7. DATA datac ; SET datac ; /* attention risqué si erreur */ lconso = LOG(conso) ; lrevenu = LOG(revenu) ; RUN ; PROC PRINT ; VAR lconso lrevenu ; RUN ; /* DATA = datac optionnel */ P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 18. 18 c) Lecture de données dans le flot d'entrée. Cette solution est utile quand on veut introduire des données peu nombreuses. Cela évite de créer un fichier de données séparé du programme. Par conséquent, les données sont dans le programme. Exemple n°8. DATA essai2 ; INPUT nom $ salaire datenais csp $ ; /* $ signale 1 var. chaîne de car. */ DATALINES ; /* on peut mettre aussi CARDS ; */ DUPONT 100000.4 1954 cadre DURANT 50000.1 1960 ouvrier TOTO • 1985 cadre /* notez la valeur manquante notée • */ ; /* notez le ; qui annonce la fin des CARDS */ PROC PRINT ; RUN ; notes: - L'espace sépare les valeurs en colonnes (format ASCII). - Il ne faut pas oublier de valeurs pour 1 observation. - Ordre des valeurs = ordre des colonnes. - Il y a de très nombreuses options qui permettent de lire n’importe quelle autre structure de données. - La lecture de données sur fichiers externes (ASCII) est facile (INFILE et FILENAME) et puissant (cf. la documentation de C. Truy). - Autre solution pour créer un tableau VIEWTABLE (Menu Outils + Editeur de tables SAS) P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 19. 19 B) Création/modification des variables d'un tableau SAS a) L’instruction IF ... THEN ... ELSE (ELSE est optionnel) ; qui permet la création/modification conditionnelle d’une ou plusieurs variables. IF/THEN/ELSE Il y a plusieurs formes possibles pour l'instruction IF/THEN/ELSE Exemple n°9. IF datenais <= 1992 THEN classe = ‘jeune’ ; ELSE classe = ‘agé’ ; IF etage > 3 AND ascenseur = ‘non’ then type = 1 ; else type = 0 ; IF banque = ‘BNP’ THEN DO ; pays = ‘France’ ; type = ‘dépôt’ ; END ; ELSE DO ; pays = ‘Autre’ ; type = ‘nd’ ; END ; IF cout < 0 THEN cat = '<0' ; ELSE IF cout = 0 THEN cat = '=0' ; ELSE cat = '>0' ; IF date = '1983' THEN dum83 = 1 ; ELSE dum83 = 0 ; /* ou */ dum83 = date EQ '1983' ; /* ou */ dum83 = date = '1983' ; NB - opérateurs logiques: = EQ ^= NE > GT < LT >= GE <= LE . Attention >< et <> signifient respectivement minimum et maximum. - opérateurs de comparaisons multiples: NOT AND & et OR | ! - opérateur IN : IF x IN(1,3,5,7,9) THEN impair = ‘oui’ ; - opérateurs mathématiques: =, +, -, *, /, ** - fonctions: cf. photocopie en annexe. Exemple : la fonction LAG P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 20. 20 b) L'instruction SELECT/WHEN Son objectif est de remplacer le IF...THEN...ELSE peu SELECT/WHEN. clair. Elle est en outre plus rapide lors du traitement de gros fichier. Exemple n°10. DATA essai1 ; SET essai ; SELECT ; WHEN(effectif=.) taille = 'nd' ; WHEN(0<effectif<50) taille = '1' ; WHEN(50<=effectif<100) taille = '2' ; WHEN(100<=effectif) taille = '3' ; OTHERWISE taille = 'pb' ; END ; RUN ; Exemple n°11. DATA essai1 ; SET essai ; SELECT (a); WHEN(1) DO ; b = 1 ; c = 5 ; END; WHEN(2) DO ; b = 2 ; c = 2 ; END ; WHEN(5) b = 3 ; /* ou DO ; b=3 ; END ; */ OTHERWISE ; END ; RUN ; NB : • une autre solution à IF et SELECT sera présentée en 2ème partie (PROC FORMAT). • condition multiple WHEN(a=1 AND c = 0) … • attention si a est une valeur manquante DATA essai1 ; SET essai ; SELECT ; WHEN(a<0) b = 1 ; ... END ; RUN ; /* ou */ /* b=1 car une val. manq. est codée comme -10308 */ DATA essai1 ; SET essai ; IF a <0 THEN b = 1 ; RUN ; P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 21. 21 c) La sélection de variables dans l’étape DATA Exemple n°12. DATA tab1 ; SET donnees ; KEEP budget consomm ; ... DATA tab1 ; SET donnees ; DROP datnaiss ; ... DATA tab1; SET donnees ; RENAME budget = revenu ; ... • RENAME budget = revenu ; se lit comme RENAME anciennom = nouveaunom ; • on peut utiliser KEEP et DROP en même temps, mais ce n'est pas conseillé. • on utilisera DROP ou KEEP selon le nombre de variables à conserver ou à éliminer. • Les instructions KEEP, DROP et RENAME peuvent se mettre n'importe où dans une étape DATA. • Et avec un ordre indifférent. P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 22. 22 Exemple n°13. DATA tab1 ; SET donnees ; /* contient au moins x1 budget */ KEEP lconso budget x1 lagbudget ; RENAME x1 = conso ; lconso = LOG(x1) ; lagbudget = LAG(budget) ; RUN ; • Ne pas faire lconso = LOG(conso) ; En effet, le RENAME n'est effectif qu'à la fin de l'étape DATA. • Dans le même ordre d'idée, comme le RENAME ne se fait qu’à la fin, il ne faut pas mettre conso dans le KEEP, mais x1. • De même, si on fait un KEEP, il ne faut pas oublier de mettre la liste complète des variables à garder y compris lconso et lagbudget dans le KEEP (sinon créée mais pas gardée). Attention de ne pas s'embrouiller dans les DROP, KEEP et RENAME comme instruction ou option. Exemple n°14. DATA tab1 ( KEEP = budget consomm ) ; /* options au nom de tableau */ SET donnees ; ... DATA tab1 ( DROP = dat_naiss ) ; SET donnees ; ... DATA tab1 ( RENAME = ( budget = revenu ) ) ; SET donnees ; ... P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 23. 23 4 ) Introduction aux principales procédures Les données utilisées dans ce qui suit : DATA temp ; INPUT nom $ num sexe $ csp $ revenu conso datenaiss DDMMYY8. ; CARDS ; un 1 h employé 10 9 19/02/80 deux 2 f cadre 11 7 19/03/81 trois 3 h ouvrier 5 4 29/08/64 quatre 4 h employé 8 7 10/12/54 cinq 5 h cadre 14 10 05/10/90 six 6 h ouvrier 6 4 10/11/06 sept 7 h ouvrier 7 6 12/06/89 huit 8 f cadre 11 10 30/05/87 neuf 9 h ouvrier 9 8 01/04/81 dix 10 h employé 9 8 10/09/79 onze 11 f employé 8 7 18/09/78 douze 12 h ouvrier 9 • 17/07/94 ; RUN ; NB : DDMMYY8. est un informat. En réalité 19/02/80 est stocké par SAS comme une nombre égal à 7354 (c’est à dire le nombre de jours écoulés depuis le 1/1/1960). A noter que c’est un peu pareil avec Excel (sauf que 0 est pour le 1/1/1900). Le symbole • repère une valeur manquante. P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 24. 24 A) Les procédures utilitaires 1) PROC PRINT permet d'imprimer le contenu d'un tableau. Exemple n°15. PROC PRINT DATA = temp ; VAR nom sexe csp conso ; RUN ; Essai de Proc print 09:17 Monday, March 24, 2003 1 Obs nom sexe csp conso 1 un h employé 9 2 deux f cadre 7 3 trois h ouvrier 4 4 quatre h employé 7 5 cinq h cadre 10 6 six h ouvrier 4 7 sept h ouvrier 6 8 huit f cadre 10 9 neuf h ouvrier 8 10 dix h employé 8 11 onze f employé 7 12 douze h ouvrier • Quelques variantes utiles. PROC PRINT DATA = temp (OBS=10) ; RUN ; PROC PRINT ; VAR X1-X10 ; RUN ; /* dans certains cas */ PROC PRINT ; VAR nom datenaiss revenu conso ; FORMAT nom $4. datenaiss DDMMYY10. revenu dollar10.2 conso comma4.1 ; RUN ; Autre façon de visualiser une table: Le wiewer de SAS avec l'EXPLORER puis sélection de la librairie et de la table SAS. P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 25. 25 PROC 2) PROC CONTENTS Exemple n°16. PROC CONTENTS DATA = temp SHORT ; RUN ; The CONTENTS Procedure -----Alphabetic List of Variables for WORK.TEMP----- conso csp nom num revenu sexe Exemple n°17. PROC CONTENTS DATA = temp ; RUN ; The CONTENTS Procedure Data Set Name: WORK.TEMP Observations: 12 Member Type: DATA Variables: 6 Engine: V8 Indexes: 0 Created: 14:15 Tuesday, September 24, 2002 Observation Length: 48 Last Modified: 14:15 Tuesday, September 24, 2002 Deleted Observations: 0 Protection: Compressed: NO Data Set Type: Sorted: NO -----Engine/Host Dependent Information----- Data Set Page Size: 4096 Number of Data Set Pages: 1 First Data Page: 1 Max Obs per Page: 84 Obs in First Data Page: 12 Number of Data Set Repairs: 0 File Name: C:DOCUME~1PIERRE~1LOCALS~1TempSAS Temporary Files_TD932temp.sas7bdat Release Created: 8.0202M0 Host Created: WIN_PRO -----Alphabetic List of Variables and Attributes----- # Variable Type Len Pos ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ 6 conso Num 8 16 4 csp Char 8 40 2 nom Char 8 24 1 num Num 8 0 5 revenu Num 8 8 3 sexe Char 8 32 Variantes: • PROC CONTENTS DATA = malib._ALL_ SHORT ; • PROC CONTENTS ; RUN ; pour le dernier tableau crée. P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 26. 26 B) Les procédures de statistiques descriptives 1) PROC MEANS Exemple n°18. PROC MEANS DATA = temp ; VAR revenu conso ; RUN ; The MEANS Procedure Variable N Mean Std Dev Minimum Maximum ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ revenu 12 8.9166667 2.4293034 5.0000000 14.0000000 conso 11 7.0833333 2.0652243 4.0000000 10.0000000 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ Les principales options de PROC MEANS options sont : • N NMISS MEAN STD MIN MAX ... • les quantiles (ou fractiles): P1 P5 P10 Q1 (P25) MEDIAN (P50) Q3 (P75) P90 P95 P99 QRANGE etc. • CSS CV KURTOSIS RANGE SKEWNESS SUM USS STDDEV (ou STD) VAR ... • CLM (intervalle de confiance à 95%) ... NB : On peut obtenir d’autres statistiques et certains graphiques avec PROC UNIVARIATE. P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 27. 27 2) L’instruction PROC FREQ Exemple n°19. PROC FREQ DATA = temp ; TABLES sexe ; RUN ; The FREQ Procedure Cumulative Cumulative sexe Frequency Percent Frequency Percent ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ f 3 25.00 3 25.00 h 9 75.00 12 100.00 NB: Frequency = Effectif et PERCENT = Fréquence. Exemple n°20. PROC FREQ DATA = temp ; TABLES csp*sexe ; RUN ; Table of csp by sexe csp sexe Frequency‚ Percent ‚ Row Pct ‚ Col Pct ‚f ‚h ‚ Total ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ cadre ‚ 2 ‚ 1 ‚ 3 ‚ 16.67 ‚ 8.33 ‚ 25.00 ‚ 66.67 ‚ 33.33 ‚ ‚ 66.67 ‚ 11.11 ‚ ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ employé ‚ 1 ‚ 3 ‚ 4 ‚ 8.33 ‚ 25.00 ‚ 33.33 ‚ 25.00 ‚ 75.00 ‚ ‚ 33.33 ‚ 33.33 ‚ ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ ouvrier ‚ 0 ‚ 5 ‚ 5 ‚ 0.00 ‚ 41.67 ‚ 41.67 ‚ 0.00 ‚ 100.00 ‚ ‚ 0.00 ‚ 55.56 ‚ ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Total 3 9 12 25.00 75.00 100.00 P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 28. 28 Options NOFREQ: n’édite pas les effectifs. NOPERCENT: n’édite pas les % par rapport au total des effectifs. NOROW: n’édite pas les % par rapport à la somme en ligne. NOCOL: n’édite pas les % par rapport au total de chaque colonne. NOCUM: n’édite pas les effectifs cumulés (pour tableau à 1 caractère). MISSING: les valeurs manquantes comptent dans le calcul (comme une modalité et dans le calcul des effectifs totaux et donc des %) sinon elles sont comptabilisées à part. MISPRINT: les valeurs manquantes sont dans le tableau mais ne comptent pas comptent dans le calcul des %. Exemple n° 21. PROC FREQ DATA = temp ; TABLES csp*sexe /NOROW NOCOL ; RUN ; csp sexe Frequency‚ Percent ‚f ‚h ‚ Total ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ cadre ‚ 2 ‚ 1 ‚ 3 ‚ 16.67 ‚ 8.33 ‚ 25.00 ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ employé ‚ 1 ‚ 3 ‚ 4 ‚ 8.33 ‚ 25.00 ‚ 33.33 ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ ouvrier ‚ 0 ‚ 5 ‚ 5 ‚ 0.00 ‚ 41.67 ‚ 41.67 ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Total 3 9 12 25.00 75.00 100.00 P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 29. 29 Exemple n°22. PROC FREQ DATA = temp ; TABLES sexe csp*sexe ; RUN ; NB : - A noter qu'en présence de variables numériques (revenu, age, chiffre d’affaires...) il est la plupart du temps nécessaire de recoder la variables en une variable (numérique ou caractère) composé d’un nombre de classe limité. - Il y a de très nombreuses options (statistiques notamment). Exemple n°23. PROC FREQ DATA = temp ; TABLES csp*sexe / CHISQ; RUN ; Statistiques pour table de csp par sexe Statistique DF Valeur Proba. ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ Khi-2 2 4.4444 0.1084 Test du rapport de vraisemblance 2 5.1783 0.0751 Khi-2 de Mantel-Haenszel 1 3.9855 0.0459 Coefficient Phi 0.6086 Coefficient de contingence 0.5199 V de Cramer 0.6086 AVERTISSEMENT : 100% des cellules nécessitent un effectif inférieur à 5. Le Khi-2 ne peut pas convenir. Taille de l'échantillon = 12 /* Le tableau à 2 car. n’est pas reproduit de nouveau */ P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 30. 30 3) L’instruction PROC CORR Exemple n°24. PROC CORR NOSIMPLE DATA = temp ; VAR revenu conso; RUN ; The CORR Procedure 2 Variables: revenu conso Pearson Correlation Coefficients Prob > |r| under H0: Rho=0 revenu conso revenu 1.00000 0.83503 0.0007 12 11 conso 0.83503 1.00000 0.0007 11 11 • Une variante utile est : PROC CORR ; VAR conso age revenu ; WITH pmc secteur ; • Différents coefficients de corrélation peuvent être calculés. • Les principales options sont: a) NOSIMPLE : pas de stat. des. fournies. b) NOMISS : si une observation est manquante pour une variable, elle est éliminée pour toutes les autres variables de l’analyse (cylindrage). c) NOPROB : pas d’affichage du niveau de significativité marginale associée à chaque coefficient de corrélation. d) SSCP et/ou COV fait afficher la matrice des produits croisés (XtX) et/ou de la matrice de variance-covariance. P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 31. 31 C) Les instructions BY/CLASS et la procédure PROC SORT 1) L'instruction PROC SORT ... ; Cette instruction joue un rôle fondamental dans SAS pour des raisons que nous verrons dans un deuxième temps. Exemple n°25. PROC SORT DATA = temp ; BY pays ; RUN ; /* tri par ordre croissant de pays */ /* numérique ou caractère */ On trie le dernier tableau crée. Le résultat trié aura donc le même nom, le fichier de base est perdu. PROC SORT ; BY region annee ; RUN ; PROC SORT ; BY region DESCENDING annee ; /* ordre croiss. de region (alphab.)*/ RUN ; /* et décroiss. d’année : 83,82,81. */ /* region et non région !!! */ PROC SORT DATA =temp OUT = ftrie ; BY pays ; /* fichier d'origine conservé */ RUN ; Remarques: pour supprimer les doublons dans un tableau SAS, on peut faire: PROC SORT DATA =temp OUT = ftrie NODUPKEY ; /* supprime les doublons / clés de tri */ BY pays annee ; RUN ; ou PROC SORT DATA =temp OUT = ftrie NODUPLICATES ; /* supprime les doublons / obs. */ BY pays annee ; RUN ; P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 32. 32 2) Les instructions BY et CLASS : une application à PROC MEANS ; Exemple n°26. PROC MEANS ; BY csp ; RUN ; PROC FREQ ; TABLES csp ; BY sexe ; RUN ; /* attention il faut un PROC SORT */ PROC REG ; MODEL conso = revenu ; BY region ; RUN ; /* et ici un autre !!!! */ MAIS ATTENTION, il est indispensable que le tableau soit d'abord trié sur les mêmes variables et dans le même ordre que celles de l'instruction BY. Exemple n°27. PROC SORT DATA = temp ; BY csp ; RUN ; PROC MEANS ; VAR revenu conso ; BY csp ; RUN ; ----------------------------------------- csp=cadre ------------------------------------------ The MEANS Procedure Variable N Mean Std Dev Minimum Maximum ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ revenu 3 12.0000000 1.7320508 11.0000000 14.0000000 conso 3 9.0000000 1.7320508 7.0000000 10.0000000 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ---------------------------------------- csp=employé ----------------------------------------- Variable N Mean Std Dev Minimum Maximum ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ revenu 4 8.7500000 0.9574271 8.0000000 10.0000000 conso 4 7.7500000 0.9574271 7.0000000 9.0000000 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ ---------------------------------------- csp=ouvrier ----------------------------------------- Variable N Mean Std Dev Minimum Maximum ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ revenu 5 7.2000000 1.7888544 5.0000000 9.0000000 conso 4 5.4000000 1.6733201 4.0000000 8.0000000 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 33. 33 Une alternative à BY est CLASS sexe ; qui évite d’avoir à trier le tableau. Les résultats ont une présentation légèrement différente. Exemple n°28. PROC MEANS DATA = temp ; VAR revenu conso ; CLASS csp ; RUN ; The MEANS Procedure N csp Obs Variable N Mean Std Dev Minimum Maximum ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ cadre 3 revenu 3 12.0000000 1.7320508 11.0000000 14.0000000 conso 3 9.0000000 1.7320508 7.0000000 10.0000000 employé 4 revenu 4 8.7500000 0.9574271 8.0000000 10.0000000 conso 4 7.7500000 0.9574271 7.0000000 9.0000000 ouvrier 5 revenu 5 7.2000000 1.7888544 5.0000000 9.0000000 conso 4 5.4000000 1.6733201 4.0000000 8.0000000 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ Mises en garde: • si la variable est continue, chaque valeur distincte est une modalité. BY peut produire alors des résultats très volumineux, voire inutilisables comme par exemple, si l’on fait PROC MEANS ; BY revenu ; RUN ; • En général, BY s'utilise plutôt sur des variables de type caractère ou sur des variables continues avec peu de valeurs différentes (année..).. • CLASS ne fonctionne pas pour toutes les procédures (PROC PRINT ; BY ; ). • On peut donc faire PROC REG ... ; BY ; RUN ; ou PROC FREQ ... ; BY ; RUN ; etc. P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 34. 34 D) Les procédures graphiques Elles sont de deux types: a. les procédures basse définition. On laisse de côté. b. les procédures haute définition. Les graphiques haute définition sont affichés dans une fenêtre spécifique. Les graphiques haute définition crées peuvent être facilement exporter dans des formats très variés de fichier graphique bmp, jpg,wmf, gif, ps... par le menu (fichier, exporter). P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 35. 35 1) PROC GPLOT: graphique dit XY. Exemple n°29. Goptions Ftext = swissb ; /* ce n’est pas une étape DATA ni une PROC */ Axis1 Label=('Revenu') ; Axis2 Label =('N') ; Symbol1 Color = Black I=Join Value=Circle ; RUN ; PROC GPLOT DATA = temp ; PLOT revenu*num ; RUN ; QUIT ; P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 36. 36 Exemple n°30. (on peut demander plusieurs graphiques dans une demande). PROC GPLOT DATA = temp ; PLOT revenu*num ; PLOT conso*revenu ; RUN ; QUIT ; Exemple n°31. (superposition) DATA temp ; SET temp ; Age = 2006 - YEAR(datenaiss) ; RUN ; Goptions Ftext = swissb ; Axis1 Label=('Revenu et Age') ; Axis2 Label =('N') ; Symbol1 Color = Black I=Join Value=Circle ; Symbol2 Color = Red I=Join Value=square ; RUN ; PROC GPLOT DATA = temp ; PLOT revenu*num age*num / OVERLAY haxis = axis2 vaxis = axis1 ; TITLE Graphique overlay ; Footnote Source : PB ; RUN ; QUIT ; P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 37. 37 2) PROC GCHART: permet de représenter une série (num. ou car.) sous la forme d’histogramme ou sectoriel. Exemple n°32. PROC GCHART DATA = temp ; PIE sexe ; HBAR csp ; TITLE Utilisation de PROC GCHART ; Footnote Source : PB ; RUN ; QUIT ; • Graphiques en couleur • HBAR csp / TYPE = PCT ; pour avoir les % et non les effectifs. • Nombreuses variantes P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 38. 38 Exemple n°33. Goptions Ftext = swissb ; Axis1 Label=('CSP') ; Axis2 Label =('Revenu moyen') ; Symbol1 Color = Black I=Join Value=Circle ; Symbol2 Color = Red I=Join Value=square ; RUN ; PROC GCHART DATA = temp ; VBAR csp / TYPE = MEAN SUMVAR = revenu ; RUN ; QUIT ; • TYPE peut être égal à FREQ, CFREQ, PCT, CPCT SUM ou MEAN. • Très nombreuses options qui dépendent souvent du type de graphique. • Rôle du QUIT. Exemple n°34. création automatique des classes PROC GCHART DATA = temp ; VHBAR revenu / MIDPOINTS = 6 8 10 12 ; /* HBAR est aussi possible */ RUN ; QUIT ; P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 39. 39 Un dernier graphique ! Comment le faire ? P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 40. 40 E) Les instructions économétriques 1) PROC REG PROC REG permet d'estimer une modèle économétrique par les moindres carrés ordinaires. Exemple n°35. PROC REG ; MODEL conso = revenu ; /* specification informatique */ RUN ; QUIT ; The REG Procedure Model: MODEL1 Dependent Variable: conso Analysis of Variance Sum of Mean Source DF Squares Square F Value Pr > F Model 1 32.71384 32.71384 23.03 0.0007 Error 10 14.20282 1.42028 Corrected Total 11 46.91667 Root MSE 1.19176 R-Square 0.6973 Dependent Mean 7.08333 Adj R-Sq 0.6670 Coeff Var 16.82479 Parameter Estimates Parameter Standard Variable DF Estimate Error t Value Pr > |t| Intercept 1 0.75353 1.36303 0.55 0.5925 revenu 1 0.70988 0.14791 4.80 0.0007 Le modèle est donc : Consoi = β1 + β 2 × Re venui + ui : écriture économétrique P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 41. 41 Les principales options disponibles dans PROC REG options_reg ; sont: - DATA = nomtab nom du tableau utilisé, le dernier par défaut - NOPRINT n'imprime aucun résultat - SIMPLE imprime des stat. des. pour les variables utilisées dans la procédure - ALL imprime toutes les statistiques possibles dans PROC REG (volumineux) Exemple n°36. Goptions Ftext = swissb ; Symbol1 Color = Black Value=Circle ; Symbol2 Color = Red Value=square ; RUN ; PROC REG SIMPLE DATA = temp ; MODEL conso = revenu age / NOINT DW COVB ; PLOT Residual.*Obs. ; PLOT conso*Obs. Predicted.*Obs. / OVERLAY ; RUN ; QUIT ; P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 42. 42 Exemple n°37. Pour obtenir un test d'hétéroscédasticité et des estimations robustes à l'hétéroscédasticité, faire : PROC REG DATA = essai ; MODEL lnc = lnp lny /ACOV SPEC; RUN ; QUIT ; (résultats des mco non reproduits) Dependent Variable: LNC Consistent Covariance of Estimates Variable Intercept LNP LNY Intercept 1.1212904796 0.2181771074 -0.241869513 LNP 0.2181771074 0.1102122418 -0.050163679 LNY 0.241869513 -0.050163679 0.0523332408 Test of First and Second Moment Specification DF Chi-Square Pr > ChiSq 5 5.70 0.3365 P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 43. 43 Exemple n°38. PROC REG ; MODEL consom = revenu age ; TEST revenu = 0 , age = 1 ; RUN ; QUIT ; Exemple n°39. PROC REG ; MODEL y = x1 x2 x3 z1 z2 ; RESTRICT x1 + x2 + x3 = 1 ; RUN ; QUIT ; 2) PROC AUTOREG. AUTOREG Exemple n°40. /* test de Chow */ PROC AUTOREG DATA = temp ; MODEL conso = revenue age / CHOW = (8); TITLE test de Chow ; RUN ; Test de Chow Structural Change Test Break Test Point Num DF Den DF F Value Pr > F Chow 8 3 40 5.29 0.0036 Exemple n°41. /* PRAIS-WINSTEN */ PROC AUTOREG ; MODEL y = x / METHOD = YW GODFREY DWPROB ; TITLE Prais-Winsten ; RUN ; P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 44. 44 5) Présentation du programme, de l'output et du LOG • Le contenu de chaque fenêtre (pgm, output, log…) peut être imprimé, sauvegardé, coupé-collé. • D’autres fenêtres peuvent apparaître (aide, graphique...) • les affichages s’empilent dans le Log et dans l’Output après chaque exécution (RUN). • Il est inutile de sauvegarder le LOG et l’OUTPUT en règle générale. i) il faut documenter le programme. * commentaire ; ou par /* commentaire */ Exemple n° 42. DM ‘CLEAR LOG ; CLEAR OUTPUT ; ‘ ; /* efface output et log à chaque exéc. */ * Blanchard P., essai.sas, 5/03/2003 ; DATA temp ; SET consom ; ... /* édition des données */ PROC PRINT DATA = temp ; RUN ; PROC PRINT DATA = temp ; RUN ; /* édition du tableau temp */ /***************/ /* commentaire */ /***************/ PROC PRINT DATA = temp ; RUN ; Exemple n° 43. Bleu foncé DATA temp ; SET temp ; Bleu clair age = 2006 - YEAR(datenaiss) ; chaine = 'v' ; Vert foncé violet RUN ; rouge PROC FREQ ; TABLES Sexe age ; vert TITLE Mon Titre ; RUN ; Noir ceci est une erreur ; /* ceci est un commentaire */ DATA, PROC FREQ, RUN et QUIT : BF SET, TABLES et TITLE : BC P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 45. 45 ii) L'OUTPUT Exemple n° 44. OPTIONS NOCENTER ; RUN ; TITLE ; FOOTNOTE ; RUN ; . . . PROC MEANS ; RUN ; PROC MEANS ; TITLE Mon Titre ; RUN ; Le Système SAS 13:39 Thursday, April 20, 2006 1 La procédure MEANS Variable Nb Moyenne Écart-type Minimum Maximum ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ num 12 6.5000000 3.6055513 1.0000000 12.0000000 revenu 12 8.9166667 2.4293034 5.0000000 14.0000000 conso 11 7.0833333 2.0652243 4.0000000 10.0000000 datenaiss 12 8206.33 4909.87 -1848.00 17115.00 ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ Mon Titre 13:39 Thursday, April 20, 2006 2 La procédure MEANS Idem ci dessus - On peut faire du couper-coller (mais il y a mieux l’ODS, cf. plus loin). - Utilisation de Title et de Footnote • une instruction TITLE est en effet jusqu'à la prochaine instruction TITLE ; • TITLE ; annule tous les titres (au début du programme) • TITLE doit être placée dans une PROC avant le RUN ; sinon il modifie le titre de la PROC précédente. Par conséquent, l’ordre des instructions est PROC ... ; TITLE ... ; RUN ; • TITLEn (avec n=1,...,10) permet d'écrire des textes sur plusieurs lignes: par exemple, TITLE texte en première ligne ; TITLE3 texte en troisième ligne ; • L’instruction FOOTNOTE qui suit la même logique que TITLE. - OPTIONS NOCENTER NODATE NONUMBER LINESIZE = 64-256 ORIENTATION = PORTRAIT ou LANDSCAPE PAGENO = 1 ; P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 46. 46 iii) Le LOG C’est un élément indispensable pour contrôler le bon déroulement de l’exécution. A examiner avant de regarder les résultats. Exemple n° 45. DATA temp ; SET temp ; age = 2006 - YEAR(datenaiss) ; lconso = LOG(conso) ; RUN ; PROC MEANS ; RUN ; 77 DATA temp ; SET temp ; 78 age = 2006 - YEAR(datenaiss) ; 79 lconso = LOG(conso) ; 80 RUN ; NOTE: Des valeurs manquantes ont été générées à la suite d'une opération sur des valeurs manquantes. Chaque endroit est défini par : (Nombre de fois) dans (Ligne):(Colonne). 1 dans 79:10 NOTE: 12 observations copiées de la table WORK.TEMP. NOTE: La table WORK.TEMP a 12 observations et 9 variables. NOTE: L'étape DATA a utilisé (Durée totale du processus) : temps réel 0.04 secondes temps processeur 0.04 secondes 81 82 PROC MEANS ; RUN ; NOTE: 12 observations copiées de la table WORK.TEMP. NOTE: La procédure MEANS a utilisé (Durée totale du processus) : temps réel 0.01 secondes temps processeur 0.01 secondes P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 47. 47 Exemple n° 46. DATA temp ; SET temp ; age = 2006 - YEAR(datenaiss) ; lconso = LOG(conso) ; RUN ; PROC MOYENNE ; RUN ; PROC MEANS RUN ; /* RUN n’est pas en BF */ 87 88 PROC MOYENNE ; RUN ; ERREUR: Procédure MOYENNE introuvable. NOTE: Le Système SAS a interrompu le traitement de cette étape en raison d'erreurs. NOTE: La procédure MOYENNE a utilisé (Durée totale du processus) : temps réel 0.01 secondes temps processeur 0.00 secondes 89 90 PROC MEANS RUN ; --- - 22 200 ERREUR 22-322: Erreur de syntaxe ; syntaxe requise : ;, ALPHA, CHARTYPE, CLASSDATA, CLM, COMPLETETYPES, CSS, CV, DATA, DESCEND, DESCENDING, DESCENDTYPES, EXCLNPWGT, EXCLNPWGTS, EXCLUSIVE, FW, IDMIN, KURTOSIS, LCLM, MAX, MAXDEC, MEAN, MEDIAN, MIN, MISSING, N, NDEC, NMISS, NONOBS, NOPRINT, NOTHREADS, NOTRAP, NWAY, ORDER, P1, P10, P25, P5, P50, P75, P90, P95, P99, PCTLDEF, PRINT, PRINTALL, PRINTALLTYPES, PRINTIDS, PRINTIDVARS, PROBT, Q1, Q3, QMARKERS, QMETHOD, QNTLDEF, QRANGE, RANGE, SKEWNESS, STDDEV, STDERR, SUM, SUMSIZE, SUMWGT, T, THREADS, UCLM, USS, VAR, VARDEF. ERREUR 200-322: Le symbole n'est pas reconnu et sera ignoré. P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 48. 48 Partie II) Approfondissements sur l’étape DATA et les procédures I ) Approfondissements sur l’étape DATA 1) Lecture d'un fichier externe au format EXCEL Pour importer (i.e. convertir) un fichier Excel  SAS, il y a de nombreuses possibilités: • Utiliser l'utilitaire d'importation utilisable avec les menus. • Utiliser la procédure PROC IMPORT (cf. plus loin). • Utiliser des logiciels spécialisés (DBMS-copy, STAT-Transfer...). • Utilisation d'ODS (pour l'exportation uniquement). Non traité ici. • Utilisation du DDE. Non traité ici. Soit le tableau Excel (c:Documents and Settingstab.xls) à importer. A B 1 nomvar1 nomvar2 2 1 a 3 2 b 4 3 c 5 4 d 6 5 e Vous noterez qu’il est souhaitable qu’il n’y ait pas de colonne et de ligne vides et il faut que les colonnes aient des intitulés conformes à la syntaxe SAS pour les noms de variables. Si une donnée est manquante, saisir dans la cellule =NA(). Etape 1 : définir un Libname en exécutant, par exemple, l’instruction suivante dans la fenêtre Editeur: LIBNAME moi ‘c:Mes Documents’ ; RUN ; Etape 2 : Appel du Menu File / Import Data et choisir Microsoft Excel 97 ou 2000 (.xls). Next. Etape 3 : Avec Parcourir sélectionner le fichier Excel à convertir puis Next. Etape 4 : Définir Library avec moi et donnez un nom de tableau dans Member. Puis Next. Etape 5 : Cliquez sur Finish. P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 49. 49 2) La sélection d'observations dans l’étape DATA Il y a trois techniques principales de sélection d’observations. i) L’instruction IF Exemple n°47. DATA tab1 ; SET donnees ; /* en general on ne met qu’un IF */ IF annee = 1963 ; IF 10 <= age <= 50 ; IF ((x1=5) AND (c=20 OR c=25)) ; IF annee IN(1989,1991,1993) ; IF test ; /* IF test = 1 */ ... /* il peut y avoir d’autres instructions */ RUN ; Voici une variante. DATA essai ; SET tableau ; IF annee <= 1979 THEN DELETE ; pmc = conso/revenu ;... RUN ; Exemple n°48. DATA essai ; SET tableau ; IF _N_ <= 1000 ; /* ou */ IF 100 <= _N_ <= 1000 ; RUN ; P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 50. 50 ii) L'instruction/option WHERE Supposons que l’on souhaite faire un calcul statistique en se limitant aux individus de sexe féminin. On peut faire : Exemple n°49. DATA femme ; SET total ; IF sexe = ‘F’ ; /* solution 1, déjà vue */ RUN ; /* ou */ DATA femme ; SET total ; WHERE sexe = ‘F’ ; /* WHERE = instruction */ RUN ; /* puis */ PROC MEANS DATA = femme ; RUN ; /* mieux encore */ PROC MEANS DATA = total ; VAR salaire ; WHERE sexe = 'F' ; RUN ; NB : avantages de WHERE • Mais surtout, WHERE offre d'autres possibilités, comme par exemple : WHERE nom CONTAINS ‘BLANCHARD’ ; WHERE salaire BETWEEN 100 AND 100000 ; WHERE ident IS MISSING ; autres possibilités : LIKE, SAME. • WHERE fonctionne aussi avec les procedures (mais PAS IF). • WHERE en général plus rapide que IF. /* NB : WHERE = option au nom de tableau */ DATA femme (WHERE = (sexe = 'F')) ; SET total ; RUN ; PROC MEANS DATA = total(WHERE=(sexe='F')) ; VAR salaire ; RUN ; P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 51. 51 iii) Les options OBS et FIRSTOBS de SET Les options suivantes sont très intéressantes et ne sont valables que sur le tableau en entrée. Exemple n°50. DATA tab1 ; SET donnees (FIRSTOBS=80 OBS = 100 ) ; /* qui est identique à */ DATA tab1 ; SET donnees ; IF 80 <= _N _<= 100; Si l’on veut faire la même chose pour tout le programme SAS, on peut mettre au début du programme : Exemple n°51. OPTIONS FIRSTOBS=80 OBS=100 ; • Notez que OBS = 100 ne veut pas dire les 100 suivantes, mais jusqu'à la 100ième. • Il faut bien sûr que OBS > FIRSTOBS • OPTIONS OBS=MAX FIRSTOBS=1 ; annule OPTIONS ... ; • On peut utiliser ces options pour tester un programme d’un point de vue syntaxique sur une partie des données avec OPTIONS OBS = 0 ; Exemple n°52. DATA tab1 ; SET donnees (OBS = 0 ) ; /* ou */ PROC MEANS DATA = essai(OBS=0) ; VAR x1 x2 x3 x4 ; P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 52. 52 3) Les variables de totalisation. Considérons que l'on dispose de 2 variables dans un tableau SAS (essai1): A = 1 10 2 30 44 B = 1 10 2 . 44 Supposons que l'on veuille créer 2 variables de cumul suma (pour a) et sumb (pour b) plus une variable donnant le numéro de l'observation (nobs = 1, 2, 3 …). Une possibilité est d'utiliser l'instruction RETAIN. Exemple n°53. DATA essai1 ; SET essai1 ; RETAIN nobs 0 suma 0 sumb 0 ; nobs = nobs + 1 ; /* 1 2 3 4 5 */ suma = suma + a; /* 1 11 13 43 87 */ sumb = sumb + b ; /* 1 11 13 . . (propagation des val. manq.) */ P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 53. 53 4) Les boucles sur les observations et sur les variables a) Les boucles sur les observations Exemple n°54. DATA simul ; /* (pas de SET, c’est rare) */ DO N = 1 TO 10 ; x = UNIFORM(0) ; perturb = NORMAL(0) ; y = 3 + (-2*x) + perturb ; OUTPUT ; /* (sinon on ne crée que la dernière observation */ /* Dans une étape DATA, il y a un OUTPUT implicite */ END ; PROC PRINT ; RUN ; Obs N x perturb y 1 1 0.95395 0.49853 1.59063 2 2 0.23939 -0.94737 1.57385 3 3 0.65603 0.44621 2.13415 4 4 0.85442 -1.12369 0.16746 5 5 0.93359 0.25209 1.38491 6 6 0.86566 0.51277 1.78145 7 7 0.53576 -0.76820 1.16028 8 8 0.36002 0.45920 2.73916 9 9 0.57523 2.42160 4.27114 10 10 0.85086 1.68401 2.98230 DO WHILE condition ; action(s) ; END ; /* condition évaluée au début, => au moins 0 itération */ DO UNTIL condition ; action(s) ; END ;/* condition évaluée à la fin, => au moins 1 itération */ P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 54. 54 b) Les boucles sur les variables. C'est très utile car cela permet d'effectuer des traitements répétitifs sur de nombreuses variables avec peu d'instructions. Exemple n°55. DATA temp ; SET temp ; ARRAY vecvar x1-x12 x14 x1 r40-r55 effec ; DO OVER vecvar ; vecvar = LOG(vecvar) ; /* ttes les var. de vecvar sont passées en log. */ END ; Exemple n°56. DATA temp(DROP = i) ; SET temp ; ARRAY vliste(4) ventes export import invest ; DO i = 1 TO 4 ; vliste(i) = vliste(i) * 1.206 ; /* passage en TTC */ END ; P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 55. 55 5) Les types de variables. Les Labels. Manipulation des chaînes de caractères. a) Retour sur la création des variables Lors de l'affectation d'une valeur à une variable, il s'opère quatres opérations purement techniques : • une déclaration du type de la variable (caractère/numérique), • une définition de la longueur de la variable, • l'initialisation de la variable à une certaine valeur (par défaut, valeur manquante). • éventuellement association avec un format (cf. plus loin). Rappelez-vous que SAS ne connaît que les variables numériques (réelles) et les variables de type chaîne de caractères. Exemple n°18 DATA temp ; INPUT x nom $ prenom $ pays $ ; CARDS ; 1 moi jacques A 2 dupont rené 1 f toto 123 bb • Pour la première observation (celle qui conditionne le type et la longueur des variables) : x vaut 1, nom vaut moi et prenom vaut jacqueset pays vaut A. • Pour la deuxième observation, x vaut 2, nom vaut dup (troncation automatique) et prenom vaut rené (pas de troncation). Pays vaut 1. • Pour la troisième observation, x vaut ., nom vaut tot (troncation automatique) et prenom vaut 123. Pays vaut b. /* La solution consiste à faire */ DATA temp ; LENGTH nom $ 6 prenom $ 7 pays $ 2 ; INPUT x nom $ prenom $ pays $ CARDS ; 1 moi jacques A 2 dupont rené 1 3 toto 123 bb P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 56. 56 • On ne peut pas changer le type d'une variable définie. • mais on peut créer une autre variable de type différent Exemple n°19 Si an est une variable caractère (qui vaut '86', '87', '88' etc.), l’instruction DATA temp ; SET temp; IF an = 86 ; • SAS effectue automatiquement, quand c’est possible, des conversions de type de variable (avec un warning dans le LOG). Exemple n°20 Si an est une variable caractère (qui vaut '86', '87', '88' etc.), l’instruction DATA temp ; SET temp; annee = 0 ; annee = an ; crée année en numérique. P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 57. 57 b) Les labels Exemple n°21 DATA temp ; SET temp; LABEL pmc = "propension marginale à consommer" ; pmc = conso/revenu ; NB : • 256 car. maxi pour un label • Attention les éditions peuvent être plus volumineuses • il y a aussi un LABEL pour les tables SAS (option au nom de tableau, moins utile). • un label peut être défini dans une procédure mais il n'est pas alors conservé dans le tableau SAS • On peut mettre des caractères accentués dans le LABEL, c'est d'ailleurs un des rares endroits où l'on puisse le faire dans SAS (avec les titres et les commentaires). • Néanmoins, avec les noms plus longs de variables avec SAS 8 (32 car.), ceci est moins utile. c) Les chaînes de caractères Exemple n°22 ville = 'PARIS' ; IF ville = 'paris' THEN ... ; /* est faux */ ville = 'PARIS' ; IF ville > 'paris' THEN ... ; /* est vrai */ P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 58. 58 7) Concaténation et fusion contrôlée de tableaux SAS Jusqu’à présent, nous avons utilisé l’instruction SET dans le contexte suivant : DATA temp ; SET essai ; etc... En pratique, les informations dont on a besoin sont fréquemment stockées dans des fichiers (des tableaux) différents. Comment procéder alors ? a ) Comment créer plusieurs tableaux dans une seule étape DATA. Examinons comment créer trois tableaux à partir d'un seul. Exemple n°23 DATA hommes femmes erreurs ; SET total ; IF sexe = ‘F’ THEN OUTPUT femmes ; ELSE IF sexe = ‘H’ THEN OUTPUT homes ; ELSE OUTPUT erreurs; PROC PRINT DATA = erreurs ; RUN ; On peut bien sur faire d’autres opérations dans l’étape DATA. P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 59. 59 b ) La concaténation (verticale) de tableau SAS par SET. Considérons les trois tableaux SAS suivants : Exemple n°24 tab1 tab2 tab3 nom age nom age nom nbannee B 10 d 40 e 88 A 20 e 50 f 99 C 30 Considérons que nous souhaiterions réunir ces trois tableaux par une opération de concaténation verticale (les empiler les uns en dessous des autres). Pour cela, il faut faire : DATA total ; SET tab1 tab2 tab3 ; Cette instruction procède à une concaténation verticale des trois tableaux telle que le tableau résultant soit total : nom age nbannee b 10 . a 20 . c 30 . d 40 . e 50 . e . 88 f . 99 notez : - que le nouveau tableau a autant de colonnes qu'il y avait dans les tableaux tab1, tab2 et tab3 de variables ayant des noms différents, - que les données des différents tableaux ne sont pas nécessairement triées, - que les observations sont complétées par des valeurs manquantes quand une variable est dans un tableau et pas dans un autre, - que le fait qu'il y ait 2 individus e ne pose pas de pb particulier (sauf si on voulait en ignorer un; pb des doublons, cf. plus loin). - Que fait : DATA total ; SET tab2 tab1 ; - Il peut y avoir autant de tableaux que l'on veut dans cette instruction. Bien sur, il est possible d'utiliser les options/instructions DROP, KEEP, WHERE, RENAME, IF, SELECT…. P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 60. 60 Voyons une variante résolvant le problème de nbannee et age : Exemple n°25 DATA total ; SET tab1 tab2 tab3(RENAME=(nbannee=age)) ; produit total Nom age b 10 a 20 c 30 d 40 e 50 e 88 f 99 P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 61. 61 c ) Les fusions contrôlées de tableaux par MERGE ; BY ; Cette instruction se révèle fondamentale. i) fusion contrôlée : Supposons que l'on dispose de trois fichiers de données Exemple n°26 ESE EAE DDAS ident effectif ident va ident salaire 1 11 2 22 1 13 2 21 3 32 3 33 3 31 5 52 4 43 4 41 5 53 6 63 Si les trois tableaux ne sont pas triés par ident, il faut le faire, à cause de l’utilisation du BY. PROC SORT DATA = ese ; BY ident ; RUN ; DATA total ; MERGE ese eae dddas ; BY ident ; ident effectif va salaire 1 11 . 13 2 21 22 . 3 31 32 33 4 41 . 43 5 . 52 53 6 . . 63 P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 62. 62 ii) Cylindrage. On ne souhaite conserver que les individus (repérés par leur identifiant) présents dans les trois fichiers à la fois. Exemple n°27 EAE DDAS ESE ident effectif Ident va ident salaire 1 11 2 22 1 13 2 21 3 32 3 33 3 31 5 52 4 43 4 41 5 53 6 63 DATA cylind ; MERGE ese(in=in1) eae(in=in2) ddas(in=in3) ; BY ident ; IF in1 & in2 & in3 ; ident effectif Va salaire 3 31 32 33 P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 63. 63 d) La gestion des doublons: les options FIRST et LAST. Soit le tableau total total Nom age b 10 a 20 c 30 d 40 e 50 e 50 f 99 Considérons que l'individu e soit en doublon. Comment l'éliminer ? Exemple n°28 PROC SORT DATA = total ; BY nom ; DATA total1 ; SET total ; BY nom ; IF FIRST.nom ; total1 contient : Nom age a 20 b 10 c 30 d 40 e 50 f 99 que produit IF LAST.nom ? P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 64. 64 II) L'ODS : L'ODS signifie Output Delivery System. Exemple n°57. ODS RTF file = 'c:resultat1.rtf' BODYTITLE STYLE = DEFAULT ; TITLE ; OPTIONS NODATE NONUMBER ; PROC MEANS ; RUN ; ODS RTF CLOSE ; RUN ; La procédure MEANS Variable Nb Moyenne Écart-type Minimum Maximum num 12 6.5000000 3.6055513 1.0000000 12.0000000 revenu 12 8.9166667 2.4293034 5.0000000 14.0000000 conso 11 7.2727273 2.0538213 4.0000000 10.0000000 datenaiss 12 8206.33 4909.87 -1848.00 17115.00 NB: • Le résultat apparait aussi dans l’Output sauf si ODS LISTING CLOSE ;. • On peut sélectionner certains résultats, créer des fichiers au format HTML. • Avantage fondamental : couper/coller sous Word. Les tableaux sont de vrais tableaux. • Attention : si erreur de syntaxe, le fichier sera vide. • On peut essayer différents styles avec STYLE = Analysis, Astronomy, Banker, BarrettsBlue, Beige, Brick, Brown, Curve, D3d, Default, EGDefault, Education, Electronics, Festival, Gears, Journal, Magnify, Meadow, Minimal, Money, NoFontDefault, Normal, Printer, Rsvp, Rtf, Sasweb, Science, Seaside, Sketch, Statdoc, Statistical, Theme, Torn, Watercolor, blockPrint, fancyPrinter, sansPrinter, sasdocPrinter, serifPrinter. • On peut créer son propre style (complexe). • Les procédures PROC PRINT, PROC REPORT et PROC TABULATE peuvent utiliser les styles de manière spécifique avec l’option STYLE=… • BODYTITLE signifie que les titres SAS apparaitront dans le corps du texte et non en en-tête sous Word. P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 65. 65 III) Approfondissements sur les procédures A) Lecture d'un fichier externe au format EXCEL : Pour importer (i.e. convertir) un fichier Excel  SAS, il y a de nombreuses possibilités. • possibilité d'utiliser l'utilitaire d'importation/exportation utilisable avec les menus. • Utiliser la procédure PROC IMPORT • Utiliser des logiciels spécialisés (DBMS-copy, STAT-Transfer...). • Utilisation d'ODS (pour l'exportation uniquement). Non traité ici. Exemple n°2 : PROC IMPORT/PROC EXPORT Soit le tableau Excel (tab.xls) A B 1 nomvar1 nomvar2 2 1 a 3 2 b 4 3 c 5 4 d 6 5 e On peut l'importer en faisant (le module PC-File Format est requis) LIBNAME in 'c:pierre02' ; RUN ; /* import d'un fichier excel vers SAS*/ PROC IMPORT out=in.tabtest1 DATAFILE ="c:pierre02tab.xls" DBMS=excel2000 replace; GETNAMES=YES; RUN; Pour l'exporter, LIBNAME in 'c:pierre02' ; RUN ; /* export d'un tableau SAS vers un fichier excel */ PROC EXPORT DATA= in.tabtest OUTFILE= "C:pierre02tab2.xls" DBMS=EXCEL2000 REPLACE ; RUN; PROC IMPORT peut importer aussi des fichiers ACCESS, DBF, WKS… PROC EXPORT peut exporter vers des fichiers XLS et ASCII P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 66. 66 B) La création de tableaux par des procédures : l’instruction OUTPUT OUT . Création d’un tableau par une procédure : l’exemple de PROC MEANS ; Considérons le tableau temp (cf. page suivante) qui contient 13 observations pour la variable revenu notamment. num nom sexe csp revenu conso 1 AA h employé 10 9 2 BB f cadre 11 7 3 CC h ouvrier 5 4 4 DD h employé 8 7 5 EE h cadre 14 10 6 FF h ouvrier 6 4 7 GG h ouvrier 7 6 8 HH f cadre 11 10 9 II h ouvrier 9 8 10 JJ h employé 9 8 11 KK f employé 8 7 12 LL h ouvrier 9 5 13 MM f . . 5 On voudrait connaître 1°) le % que représente le revenu d’un individu de sexe donné par rapport au revenu moyen des autres individus de même sexe. 2°) le % que représente le revenu d’un individu par rapport au revenu moyen des autres individus. Comment faire ? P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 67. 67 Exemple n°29 PROC SORT DATA = temp ; BY sexe ; PROC MEANS NOPRINT DATA = temp ; BY exe ; OUTPUT OUT = stat MEAN(revenu) = mrevenu ; PROC PRINT DATA = stat ; RUN ; DATA temp1 ; MERGE temp stat ; BY sexe ; prev = revenu/mrevenu ; RUN ; PROC PRINT ; VAR nom sexe revenu mrevenu prev ; RUN ; Obs sexe _TYPE_ _FREQ_ mrevenu 1 f 0 4 10.0000 2 h 0 9 8.5556 Obs nom sexe revenu mrevenu prev 1 BB f 11 10.0000 1.10000 2 HH f 11 10.0000 1.10000 3 KK f 8 10.0000 0.80000 4 MM f . 10.0000 . 5 AA h 10 8.5556 1.16883 6 CC h 5 8.5556 0.58442 7 DD h 8 8.5556 0.93506 8 EE h 14 8.5556 1.63636 9 FF h 6 8.5556 0.70130 10 GG h 7 8.5556 0.81818 11 II h 9 8.5556 1.05195 12 JJ h 9 8.5556 1.05195 13 LL h 9 8.5556 1.05195 P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 68. 68 Exemple n°30 PROC MEANS NOPRINT ; VAR revenu ; ; OUTPUT OUT = stat1 MEAN(revenu) = mrevenu ; PROC PRINT dATA = stat1 ; RUN ; DATA temp ; SET temp ; ind = 1 ; DATA stat1 ; SET stat1 ; ind = 1 ; DATA temp2 ; MERGE temp stat1 ; BY ind ; prevtot = revenu/mrevenu ; PROC PRINT ; VAR nom sexe revenu mrevenu prevtot ; RUN ; Obs _TYPE_ _FREQ_ mrevenu 1 0 13 8.91667 Obs nom sexe revenu mrevenu prevtot 1 BB f 11 8.91667 1.23364 2 HH f 11 8.91667 1.23364 3 KK f 8 8.91667 0.89720 4 MM f . 8.91667 . 5 AA h 10 8.91667 1.12150 6 CC h 5 8.91667 0.56075 7 DD h 8 8.91667 0.89720 8 EE h 14 8.91667 1.57009 9 FF h 6 8.91667 0.67290 10 GG h 7 8.91667 0.78505 11 II h 9 8.91667 1.00935 12 JJ h 9 8.91667 1.00935 13 LL h 9 8.91667 1.00935 A noter : • Vous noterez l'interprétation de _FREQ_ (le nombre d'individus de chaque sous population). • CLASS est préférable à BY car pas de tri nécessaire avant (nb max de var. de class. = 30). • Les résultats sont présentés différemment, cf. _TYPE_ pour sélectionner le niveau d'agrégation. • Avec NOPRINT, rien n’est affiché dans l’Output. Pour visualiser le résultat, il faut faire : PROC PRINT DATA = result ; • Avec plusieurs variables, cela marche aussi. P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 69. 69 C) Les procédures PROC FORMAT, PROC FREQ et PROC TABULATE 1) L’instruction PROC FORMAT Exemple n°50 PROC FORMAT LIBRARY = in ; VALUE $fsexe "m", "M", "h", "H" = "Homme" "f", "F" = "Femme" ; VALUE fage 0-17 = "- de 18 ans" 18-59 = "18-59 ans" 60-HIGH = "retraité" ; VALUE fchoix 1 = "oui" 2 = "non" 0,3-9 = "ND" ; VALUE fzero LOW - <0 = '<0' 0 = ' 0' 0< - HIGH = '>0' ; RUN ; Notez que cette façon de faire permet en quelque sorte de recoder à peu de frais les variables numériques. C'est un de ces grands avantages. Ensuite, on l’utilise dans une procédure (PROC MEANS, PROC GCHART, PROC FREQ…). P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 70. 70 Exemple n°51 /* on suppose que PROC FORMAT dans le pgm */ DATA essai ; INPUT sexe $ age choix ; CARDS ; m 11 1 f 21 2 m 31 3 f 41 2 H 12 1 /* attention : on a H */ m 22 1 f 32 0 f 42 1 m 13 2 m 23 . . 33 2 m 43 1 ; PROC FREQ ; TABLE sexe*age sexe*choix / NOROW NOCUM ; FORMAT age fage. choix fchoix. sexe $fsexe.; RUN ; NB : Que se passerait-il sans l’instruction FORMAT … ; ??? P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 71. 71 Table of sexe by age Frequency‚ Percent ‚- de 18 ans ‚18-59 ans‚ Total ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒˆ Homme ‚ 3 ‚ 4 ‚ 7 ‚ 27.27 ‚ 36.36 ‚ 63.64 ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒˆ Femme ‚ 0 ‚ 4 ‚ 4 ‚ 0.00 ‚ 36.36 ‚ 36.36 ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒˆ Total 3 8 11 27.27 72.73 100.00 Frequency Missing = 1 Table of sexe by choix Frequency‚ Percent ‚ND ‚oui ‚non ‚ Total ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Homme ‚ 1 ‚ 4 ‚ 1 ‚ 6 ‚ 10.00 ‚ 40.00 ‚ 10.00 ‚ 60.00 ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Femme ‚ 1 ‚ 1 ‚ 2 ‚ 4 ‚ 10.00 ‚ 10.00 ‚ 20.00 ‚ 40.00 ƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒˆ Total 2 5 3 10 20.00 50.00 30.00 100.00 Frequency Missing = 2 P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 72. 72 2) L’instruction PROC TABULATE Voici un petit exemple donnant une idée ce que qu'elle permet (sur les donnée de csp/sexe): Exemple n°52 PROC FORMAT LIBRARY = work ; VALUE $fsexe "h" = "Homme" "f" = "Femme" ; PROC TABULATE DATA = test ; CLASS sexe csp ; VAR revenu ; TABLE sexe ALL , (csp ALL)*revenu*(MEAN N) / RTS = 16 ; FORMAT sexe $fsexe.; RUN ; P. Blanchard – Logiciel SAS – Master 2 Recherche
  • 73. „ƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ† ‚ ‚ csp ‚ ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚ cadre ‚ employé ‚ ouvrier ‚ All ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚ revenu ‚ revenu ‚ revenu ‚ revenu ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ…ƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚ N ‚ Mean ‚ N ‚ Mean ‚ N ‚ Mean ‚ N ‚ Mean ‚ ‡ƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚sexe ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‡ƒƒƒƒƒƒƒƒƒƒ‰ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚Femme ‚ 2.00‚ 11.00‚ 1.00‚ 8.00‚ .‚ .‚ 3.00‚ 10.00‚ ‡ƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚Homme ‚ 1.00‚ 14.00‚ 3.00‚ 9.00‚ 5.00‚ 7.20‚ 9.00‚ 8.56‚ ‡ƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒˆƒƒƒƒƒƒƒƒƒƒƒƒ‰ ‚All ‚ 3.00‚ 12.00‚ 4.00‚ 8.75‚ 5.00‚ 7.20‚ 12.00‚ 8.92‚ Šƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒ‹ƒƒƒƒƒƒƒƒƒƒƒƒŒ