Telechargé par Solune Vanden Bossche

Fascicule logiciel SAS 2017

publicité
Département de Sociologie
Université Paris Nanterre
INITIATION AU LOGICIEL SAS
Année 2017-2018
Fascicule n°1
Département de Sociologie
Fanny Bugeja-Bloch - Leïla Frouillou - Julien Gros - Alina Toader
Fanny Bugeja-Bloch, [email protected], Second semestre.
Leïla Frouillou, [email protected], Premier semestre : Groupe jeudi 13h30
DD408
Julien Gros, [email protected], Premier semestre : Groupe jeudi 15h30 DD408
Alina Toader, [email protected], Premier semestre : Groupe vendredi 10h30, DD407
Université Paris Nanterre
200 avenue de la République, Nanterre 92001 Cedex
Descriptif du cours
Initiation au logiciel SAS
Ce cours consiste en l’apprentissage de la démarche d’analyse de bases de
données quantitatives à partir du logiciel statistique SAS. Il permet d’une part de
proposer les outils nécessaires à l’étude d’enquêtes quantitatives en Sociologie et en
Démographie, et d’autre part d'acquérir la maitrise du logiciel SAS utilisé dans le
monde de la recherche et de l’entreprise. Le contenu de ce cours porte ainsi sur
l’apprentissage des principales commandes, procédures et syntaxes utilisées afin
d’analyser enquêtes quantitatives et bases de données. Il offre ainsi la possibilité
d’acquérir les notions nécessaires au maniement et à l’analyse de bases de données
quantitatives (lecture, sauvegarde, construction, restructuration de bases, analyses
descriptives et explicatives). Cet apprentissage s’appuie sur des exemples
d’applications à partir d’enquêtes socio-démographiques. Le cours permet aux
étudiants de se former à la recherche de données, notamment via le site du réseau
Quételet.
Organisation du cours
Les étudiants peuvent être munis d’une clé USB afin de sauvegarder leurs fichiers et
leurs documents.
L’apprentissage progressif du logiciel au cours du semestre engage les étudiants à
être assidus.
Bibliographie
- Decourt, O., SAS l’essentiel, Coll. « Applications & métiers », Dunod, Paris,
2011
- Duguet E., Introduction à SAS, Coll. « Economie et statistiques avancées »,
Economica, 2004.
- Howell D.C., Méthodes statistiques en sciences humaines, Paris, Deboeck
Université, 1998.
- Kontchou Kouomegni, H., SAS : maîtriser SAS Base et SAS Macro, Dunod,
Paris, 2007.
- Sautory O., La statistique descriptive avec le système SAS, Paris, Insee
Guides, n° 1 et 2, 1995.
Téléchargement des bases de données, fichiers et documents
Toutes les bases de données, les fichiers et les documents de cours sont
sauvegardés sur la plateforme cours en ligne (http://coursenligne.u-paris10.fr/).
Vous pouvez vous rendre dans la rubrique du cours pour télécharger l’ensemble des
documents et les sauvegarder.
Accès au logiciel SAS
Tous les étudiants de l’université Paris Nanterre peuvent avoir accès gratuitement au
logiciel SAS et l’installer sur leur ordinateur. Pour cela, il est nécessaire de disposer
d’une adresse mail u-paris10.fr active.
Les étudiants doivent se connecter à la plateforme située à l’adresse suivante :
https://lad.education-recherche.fr/liste_des_offres
Ensuite, il convient de télécharger les différents fichiers d’installation, puis installer le
programme après avoir décompressé les fichiers téléchargés. Les détails de la
procédure sont présents sur la plateforme de téléchargement.
Pour plus d’information, vous pouvez contacter la Direction des Ressources
Informatiques de l’Université.
Contact : Secrétariat de la DRI - Bâtiment BSL – Bureau 307
Lundi, Mardi, Jeudi, Vendredi : 9h30 – 12h30 13h30 – 17h30)
Tél: 01 40 97 49 01 - Email: [email protected]
Sommaire
Fascicule n°1
Introduction : Du questionnaire à l’analyse de données __________ 7 1. Objectifs________________________________________________________ 7 2. Les sources de données __________________________________________ 11 3. L'enquête ERFI _________________________________________________ 12 4. Des questions… à la base de données _______________________________ 14 I. L’environnement SAS - Les données SAS___________________ 17 1. L'environnement SAS ____________________________________________ 17 2. Les fenêtres SAS________________________________________________ 17 3. Les fichiers SAS ________________________________________________ 18 4. Les Tables SAS _________________________________________________ 19 5. Le libname _____________________________________________________ 20 6. Importation de données en Table SAS _______________________________ 22 7. Edition d’une Table SAS __________________________________________ 26 II. Les premiers pas avec SAS ______________________________ 28 1. Les procédures SAS – PROC ______________________________________ 28 2. Les Tables de données – DATA ____________________________________ 28 3. Les programmes SAS ____________________________________________ 29 4. La syntaxe SAS _________________________________________________ 30 5. PROC CONTENTS – Edition de Tables SAS __________________________ 31 6. PROC SORT – Tri des données ____________________________________ 33 7. PROC PRINT– Edition des données SAS_____________________________ 35 8. Opérateurs de conditions _________________________________________ 40 III. Traitements des Tables SAS _____________________________ 43 1. L’étape DATA __________________________________________________ 43 2. Création d’une Table SAS _________________________________________ 43 3. Extraction d’une Table SAS : KEEP – DROP – WHERE – IF ______________ 44 4. Suppression d’observations : IF… THEN DELETE ______________________ 46 5. Renommer et libeller les variables : RENAME – LABEL __________________ 48 6. Création de variables_____________________________________________ 51 7. PROC FORMAT – Format de variables ______________________________ 55 8. Supports de variables ____________________________________________ 61 5
IV. Appariement de Tables SAS _____________________________ 64 1. Fusion de Tables : MERGE – ajout de variables________________________ 64 2. Empilement de Tables : MERGE – ajout d’observations__________________ 65 3. Variable origine des Tables ________________________________________ 67 Suite dans le fascicule n°2.
6
Introduction : Du questionnaire à l’analyse de données
1. Objectifs
Ce cours d’initiation à SAS a trois principaux objectifs :
- l’apprentissage du logiciel SAS ;
- l’apprentissage de la recherche de bases de données sur une thématique
sociologique ou démographique ;
- l’apprentissage de la démarche d’analyse d’une base de données quantitatives.
Ce cours permet d’acquérir le maniement de bases de données et les démarches
d’analyse de ces données à partir du logiciel SAS.
Ces apprentissages nécessitent d’avoir des notions de ce qu’est une base de
données quantitatives. Ainsi, la maitrise des principaux rudiments du logiciel, la
syntaxe, les commandes et les procédures sont autant d’éléments à acquérir.
Pour cela, nous travaillerons en articulant deux supports :
- une partie des séances est construite en commun, à partir d’une enquête sociodémographique « Etude des Relations familiales et intergénérationnelles » (ERFI)
issue des enquêtes internationales « Générations et Genre » (GGS)
- l’autre partie des séances permet de travailler sur des bases choisies par les
étudiants, en adéquation avec un projet de recherche individuel (mémoire par
exemple).
Les thématiques
Les thématiques développées lors de ce cours sont :
-
Les données initiales (enquêtes et questionnaires)
-
Le maniement de SAS (commandes, procédures et syntaxe)
-
Les bases de données (Tables)
-
La manipulation des Tables (modification, création des données)
-
Traitements statistiques des données
-
L’interprétation des résultats
7
L’utilisation du logiciel SAS et le traitement de données quantitatives, notamment en
sciences sociales, s’inscrivent dans un processus d’analyse.
Si le traitement des données est considéré dans l’analyse comme l’étape de
constatation, elle n’en demeure pas moins dépendante des étapes antérieures qui
sont à l’origine de l’élaboration des données quantitatives.
Figure 1 : Les étapes de la démarche
8
L’utilisation du logiciel SAS peut alors être mobilisée à des moments différents de la
chaîne statistique :
- dans la saisie des données (ce qui se fait rarement, SAS n’étant pas en soit
un logiciel de capture de données),
- dans le nettoyage des bases de données ou le recodage de données (des
tris croisés peuvent permettre de vérifier la cohérence des données et de leur
saisie),
- dans l’analyse statistique des données (à partir de Tableaux statistiques
complets)
Figure 2 : De la conception d’une enquête à son traitement
Source : Les six phases d’une enquête statistique, Alain Desrosières, "La portée sociologique des diverses phases
du travail statistique", in Des mesures, J-L Besson, M Comte (dir.), PUL, 1986, p 249.
9
Figure 3 : Le schéma de la chaîne statistique
10
2. Les sources de données
Qu’est-ce qu’une base de données quantitatives ?
Une base de données est un fichier dans lequel un ensemble de données sont
rassemblées. Ces données peuvent être sous formes différentes : chiffres, codes,
mots, texte…
Les informations présentes dans une base de données peuvent être issues de
sources différentes : des enregistrements administratifs ou de population (fichiers
des impôts, fichiers du personnel d’une entreprise, fichiers d’état-civil…), des
recensements ou des enquêtes (recensement de la population, enquête emploi de
l’INSEE, enquêtes sociologiques ou démographiques…).
On distinguera :
- les sources de données de type qualitatif : entretiens, observations…
- les sources de données de type quantitatif : fichiers, enregistrements,
recensements, enquêtes par questionnaires…
Attention toutefois à ne pas faire d’amalgames entre sources de données et
méthodes d’analyses. Si les sources de données quantitatives sont analysées grâce
à une méthode quantitative (les statistiques), les sources de données qualitatives
peuvent, elles, être exploitées tant par les outils du « qualitativiste » que ceux du
« quantitativiste ». Il est par exemple possible de constituer une base de données à
partir d’occurrences tirées d’entretiens.
Nous travaillerons à partir de sources de données quantitatives et dans le cas
présent à partir d’une enquête socio-démographique réalisée à partir de
questionnaires auprès d’un échantillon de population (plus de 10 000 personnes).
Du questionnaire des enquêtes à l’analyse des données
Les enquêtes socio-démographiques sont un bon exemple pour comprendre ce
qu’est une base de données.
L’objectif d’une enquête est d’étudier les comportements d’une population définie à
partir d’un échantillon et de rapprocher ces comportements des caractéristiques des
individus. Dans la très grande majorité des cas, les enquêtes s’appuient sur des
questionnaires.
Les questions permettent de recueillir des informations. Ces questions peuvent être
de types différents : questions ouvertes, fermées, à choix multiples…
En fonction du type de réponse et de la nature de l’information que l’on cherche,
mais aussi de l’utilisation que l’on fera lors de l’analyse, on choisira quelles formes
devront prendre les questions et les réponses attendues (étude de proportion, calcul
d’indicateur synthétique…).
11
Qu’est-ce qu’une base de données ?
Une base de données est une matrice (un tableau) dans lequel les données sont
ordonnées :
- les questions correspondent à des variables,
- les réponses aux questions sont des modalités (de réponse).
Pour chaque répondant (numéro de questionnaire), on dispose des réponses
(modalités) aux questions (variables). Les réponses de l’ensemble des personnes
enquêtées sont intégrées à la base de données :
- chaque colonne représente une question (variable),
- chaque ligne correspond à un individu (répondant, observation),
- les modalités de réponse sont ajoutées dans les cellules de cette matrice.
Attention, une variable ne correspond pas toujours à une question. Des variables
peuvent avoir été créées lors de la création de la base de données (création de
variables synthétiques ou de variables de contrôle). De même, si une question offre
au répondant la possibilité de donner plusieurs réponses (exemple : choix 1 puis
choix 2), alors plusieurs variables pourront être créées (variable choix 1, variable
choix 2).
3. L'enquête ERFI
L'enquête « Etude des relations familiales et intergénérationnelles » (ERFI) est une
enquête réalisée par l’Ined (Institut national des études démographiques) et l’Insee
(Institut national de la statistique et des études économiques). Elle correspond à la
version française d’une enquête internationale comparative, « GGS » (Generations
and Gender Surveys), initié par la Commission économique de l’ONU pour l’Europe
et aujourd'hui coordonnée par le Nidi (Netherlands Interdisciplinary Demographic
Institute). Il s’agit d’une enquête socio-démographique à passages répétés1.
C’est une enquête longitudinale, le même échantillon de population a été enquêté en
2005, 2008, 2011 pour voir les changements de comportements au sein de la
population, voir si les intentions déclarées lors d'une vague de l'enquête se sont
réalisées. Nous travaillerons dans ce cours à partir de la première vague de
l'enquête (ERFI-2005).
1
Voir https://erfi.web.ined.fr/
12
Les thèmes développés dans l'enquête ERFI?
L'enquête ERFI cherche principalement à étudier les situations familiales,
l'organisation des familles et leur situation socio-économique, les relations familiales
et intergénérationnelles.
Pourquoi vit-on en couple ? (question d’âge, situation professionnelle, de santé)
Qu’est-ce explique le fait d’avoir ou d’adopter des enfants ?
Comment s’organise la vie de couple et la vie de famille ?
Qu’est-ce qui explique le partage des activités au sein de la famille ?
Comment évolue l’entraide familiale ? (Qui aide qui ?)
De plus, elle identifie pour chaque personne interrogée ses caractéristiques sociodémographiques.
Le recueil et la saisie des données
L'enquête est dite représentative à l'échelle de la France métropolitaine. Un
échantillon de 10000 hommes et femmes de 18 à 79 ans a été sélectionné. Les
personnes ont été interrogées en face à face avec un enquêteur à partir d'un
questionnaire informatisé (CAPI).
Exemple :
13
Chaque question donne lieu à une variable et les réponses sont automatiquement
codées sont la forme de modalités de réponse qui seront présentes dans la base de
données.
Souvent les réponses aux questionnaires sont codées à partir de modalités
numériques : on parle alors de variables numériques.
Mais les réponses peuvent aussi donner lieu à des modalités codées en texte, en
lettre : il s'agit alors de variables alphanumériques.
4. Des questions… à la base de données
A chaque question est attachée une variable qui sera présente dans la base et qui
représentera le contenu de la question (ex : CA_MARIE).
Les modalités de réponses qui sont proposées dans le questionnaire peuvent être
saisies directement dans la base (ex : pour la question de la variable CA_MARIE, on
saisit directement 1 ou 2 selon le résultat de la réponse). Elles pourraient aussi être
saisies sous la forme de codes créés pour représenter les modalités de réponses du
questionnaire.
Exemple de question :
(Extrait du questionnaire ERFI)
14
Exemple de codage de réponse :
(Extrait du dictionnaire des odes)
Les modalités de réponses codées sont ensuite inscrites dans chaque colonne se
référant à la variable (colonne) dont elle dépend et pour chaque individu de l'enquête
(ligne).
Ainsi, toutes les réponses de l'enquête à une même question se trouveront dans la
même colonne, alors qu'une même ligne dans la base représentera l'ensemble des
réponses aux questions pour un seul et même répondant (même identifiant).
15
Vocabulaire et notions
Une base de données (fichier de données) est appelée Table SAS. On parle donc
de Table SAS pour un fichier de données, quelle qu'en soit la source initiale (fichier
administratif, recensement, enquête...).
Chaque ligne de la Table SAS représente une observation, repérée dans la Table
par un identifiant. Une observation peut représenter, une personne enquêtée ou
toute autre entité d'étude (une entreprise, un pays...). On parle d’unité statistique.
L'ensemble de ces observations est appelé population. Si l'étude est réalisée sur
l'ensemble de la Table, elle porte sur l'ensemble de la population présente dans la
Table, si l'analyse n'est réalisée que sur une partie des observations, on parle de
sous-population, sélectionnée à partir de l'ensemble de la Table.
16
I. L’environnement SAS - Les données SAS
1. L'environnement SAS
SAS est un programme d'analyse de données. Il permet de mettre en forme les
bases de données (variables, modalités et observations) :
− classer et mettre au format les données,
− codifier et renommer les données.
Mais SAS est avant tout un logiciel de traitement statistique de données :
− analyses univariées (fréquences...)
− analyses de distribution, indicateurs synthétiques (moyennes...)
− analyses multivariées (Tableaux croisés, de contingence, régressions...)
SAS est un logiciel de programmation. Pour effectuer des opérations avec SAS, il
est nécessaire d'écrire dans une fenêtre dédiée des lignes de commande soumises à
une syntaxe. Ces lignes de commande sont ensuite lancées afin que SAS les
exécute.
L'icône
permet d'entrer dans le logiciel SAS (ouvrir SAS) et d'accéder aux
différentes fenêtres d'accueil.
2. Les fenêtres SAS
SAS comprend 3 principales fenêtres :
− le program editor : l'éditeur de programme, c'est la fenêtre où les
commandes sont écrites. On peut lancer l'ensemble des commandes
comprises dans le programme ou seulement quelques lignes de commandes
sélectionnées au préalable.
− le log : le journal, c'est la fenêtre qui contient les commentaires SAS (compterendu des commandes lancées par l'éditeur de programme). S'il y a lieu, elle
répertorie aussi les erreurs lors de l'exécution des commandes.
− l'output : la sortie, c'est la fenêtre où apparaissent les résultats obtenus lors
de l'exécution des commandes. Toutes les commandes ne donnent pas lieu à
des sorties SAS.
Deux autres fenêtres sont aussi accessibles :
− l'explorateur : il permet de naviguer dans l'organisation des fichiers SAS.
− les résultats : cette fenêtre permet de retrouver la liste des précédents
résultats et de les appeler directement à l'écran dans le fichier d'output
(sortie). Cela représente un raccourci vers les sorties réalisées
antérieurement.
17
Les fenêtres peuvent être appelées par le menu, par les onglets en bas de page et
certaines fenêtres par des touches de raccourci :
F5 : program editor, éditeur de programme
F6 : log, journal
F7 : output, sortie
3. Les fichiers SAS
Les fenêtres d'éditeur de programme, du journal et de sortie, génèrent des fichiers
spécifiques. On peut :
− créer de nouveaux fichiers,
− sauvegarder des fichiers en cours,
− ouvrir des fichiers déjà existants.
La création, l'enregistrement ou l'ouverture de ces fichiers s'effectuent grâce aux
icônes traditionnelles utilisées pour ces opérations ou par le menu.
Les extensions des fichiers sont :
− « .sas » : pour les fichiers de l'éditeur de programme (commandes),
− « .log » : pour les fichiers du journal (log, historique des commandes),
− « .list » : pour les fichiers de résultats.
En plus d'enregistrer des fichiers avec l'extension spécifique à SAS (que seul SAS
peut lire), on peut sauvegarder ces fichiers sous des formats texte lisibles avec un
18
logiciel de traitement de texte (OpenOffice, word...). Les types de formats
d'enregistrement disponibles sont « .rtf » et « .dat ».
Pour cela, après avoir vérifié que la fenêtre adéquate est bien activée, il convient de
sélectionner dans le menu : Fichier / Enregistrer sous, puis de choisir le « type » de
fichier souhaité.
4. Les Tables SAS
Les Tables SAS ont pour extension « nom_table.sas7bdat ». Elles ne sont lisibles
que par SAS. Pour lire une Table SAS ou réaliser un traitement sur les données
d'une Table, une commande permet à chaque opération d'identifier la Table SAS par
son nom et par son emplacement (à l'aide du libname).
La particularité de SAS est qu'il fonctionne par des emplacements dédiés sur
l'ordinateur, qu'on appelle bibliothèques ou libname. Ce sont des dossiers de
stockage de fichiers SAS.
Ces bibliothèques sont identifiées par un nom (libname) qu'il faut leur attribuer en
même temps que leur emplacement dans le disque dur. Le libname peut être
considéré comme un accès direct virtuel à la bibliothèque SAS dans laquelle se
trouvent les Tables SAS.
Dans certains logiciels, l'accès à une base de données se fait en identifiant le chemin
à parcourir dans le disque dur pour accéder à la base de données.
Dans SAS, le libname (défini au préalable) représente l'équivalent raccourci du
chemin d'accès à la Table SAS.
19
Exemple :
- Accès traditionnel à une base de données (autre logiciel) :
« c:\Utilisateurs\nom_utilisateur\nom_base.xlsx »
- Accès avec SAS à une Table :
nom_libname.nom_table
Remarque :
Pour travailler à partir d’une Table SAS, il faut au préalable que celle-ci soit présente
(donc copiée) sur le disque dur à l’emplacement défini par le libname. Dans
l’exemple précédent, la Table SAS aura été copiée sur le disque « C » dans le
répertoire « nom_utilisateur » dont le chemin sera «c:\Utilisateurs\nom_utilisateur\».
5. Le libname
Le libname est donc une bibliothèque virtuelle SAS (identique à un répertoire) qui
n'apparait pas dans le disque dur mais dont seul SAS en reconnait l’existence et le
chemin d'accès.
On peut créer plusieurs libname (bibliothèques SAS).
On peut les visualiser dans la fenêtre de l'explorateur SAS (seul moyen de les
visualiser : « Bibliothèques ») et d'observer leur contenu (tables sauvegardées dans
ces bibliothèques).
Exemple :
Dans la bibliothèque que l’on aura nommée par exemple TABLESAS (nom de
libname choisi), on trouvera les tables SAS : Répondant2, Base_etudiants1…
Remarque :
Par défaut, les Tables SAS sont enregistrées dans la bibliothèque « WORK ». C'est
une bibliothèque temporaire dont le contenu n'est conservé que pendant une même
session SAS. Lorsque SAS est fermé, les tables de données qui s'y trouvent sont
effacées. On parle alors de tables temporaires.
Création d'un libname
On a deux moyens de créer un libname :
Par une ligne de commande de l'éditeur de programme :
Dans la fenêtre de l'éditeur, écrire la ligne de commande suivante :
libname nom_libname « chemin d’accès » ;
20
Ex1 : libname nom_libname1 «c:\Utilisateurs\nom_utilisateur\» ;
- les tables auront été copiées au préalable dans le répertoire
«c:\Utilisateurs\nom_utilisateur\» du disque dur)
Ex2 : libname nom_libname2 «h:\SAS\rep_tables\ » ;
- les tables auront été copiées dans le disque « h » et dans le
répertoire «h:\SAS\rep_tables\ »
- le disque « h » peut être un disque dur externe (clé USB) ou un
espace réservé sur un serveur.
Puis exécuter à l'aide de la touche F8 ou l'icône
Par le menu :
Créer le libname en choisissant dans le menu l'icône (nouvelle bibliothèque)
Choisir l'option Activer au démarrage (ouverture par défaut de la bibliothèque
en début de session).
Remarque :
Le nom du libname doit respecter certains critères :
− il ne doit pas dépasser 8 caractères
− il ne doit pas commencer par un chiffre
− il peut comprendre « _ »
Pour lire une Table SAS, il faut bien évidemment que la Table ait été copiée
(sauvegardée) à l'endroit identifié dans le chemin de la bibliothèque (lors de la
21
création du libname). Puis lorsqu’on appelle la Table, on la désigne par le libname
qui identifie le lieu de sa sauvegarde et par son nom propre.
Exemple :
data=nom_libname.nom_table;
Nous verrons plus loin la commande data=… qui permet de désigner la Table SAS à
partir de laquelle l’opération souhaitée sera exécutée.
Exemples :
proc contents data=nom_libname.nom_table;
proc contents data=TABLESAS.repondant2;
Remarque :
On peut créer plusieurs bibliothèques (libname) de suite dans le début d’un
programme. Ces bibliothèques pourront « pointer » vers plusieurs lieux où des tables
SAS différentes sont sauvegardées. On utilisera ensuite ces bibliothèques au fur et à
mesure des procédures.
Attention, comme chaque fois, lorsque les bibliothèques sont créées par l’éditeur de
programme, vous devrez vérifier lors d’une nouvelle session si les bibliothèques
existent toujours (avec l’explorateur). Dans le cas contraire vous devrez les recréer.
On peut alors exécuter cette tâche répétitive à chaque début de session lorsqu’il
s’agit de quelques lignes présentes au début d’un programme.
Exemple :
libname test1 « h:\SAS\rep_tables\enquete1\ »;
(tables SAS enregistrées dans le répertoire enquete1)
libname test2 « h:\SAS\rep_tables\enquete2\ »;
(tables SAS enregistrées dans le répertoire enquete2)
6. Importation de données en Table SAS
Les fichiers de données peuvent être par défaut au format SAS. C’est le cas pour de
nombreux fichiers d’enquêtes, notamment ceux proposés par l’INSEE. Cependant,
vous pouvez disposer de bases de données sous un autre format. Par exemple, si
vous réalisez votre propre enquête et que vous saisissez vos données sous Excel,
vous pouvez transformer votre fichier (base de données) Excel en fichier SAS. Les
données sont alors directement mises au format SAS et peuvent ainsi être lues par
SAS.
Par le menu :
Cette procédure utilise l’outil d’importation de Table proposé dans le menu de SAS.
• A partir du menu principal de SAS:
- Fichier / Importation de données
22
- Choisir le format de la Table importée (Microsoft Excel…) puis « Suivant ».
- Identifier la base Excel (le chemin dans votre disque dur) avec l’icône « Browse » et
ouvrir le fichier Excel correspondant.
- Identifier la feuille Excel à importer dans le menu déroulant (« Suivant »). Dans un
fichier Excel plusieurs feuilles peuvent être présentes. A vous de sélectionner la
feuille de votre matrice de données. Si le fichier Excel ne comprend qu’une seule
23
feuille, par défaut apparaît « $Données ». SI votre fichier Excel comprend plusieurs
feuilles, choisissez alors celle qui correspond à votre matrice de base de données à
importer.
• Définir la bibliothèque dans laquelle la base sera importée. Attention, par défaut
apparaît la bibliothèque WORK. Dans ce cas, la Table SAS sera générée
temporairement. A la fin de la session, elle sera supprimée.
Si vous souhaitez générer une table permanente (sauvegarde sur le disque dur ou
sur un autre disque), il convient de remplacer WORK par le nom de la bibliothèque
où l’on veut voir figurer la Table importée.
- Nommer la nouvelle Table SAS importée (« Suivant »).
- Puis « Terminer » (sauter l’étape de création du protocole d’importation).
Note :
Le protocole d’importation permet de créer un fichier « type » d’importation qui
pourra être réutilisé. Il synthétise la démarche suivie pour l’importation de bases de
données externes. Cette étape est facultative.
24
Par des lignes de commande – procédure PROC IMPORT :
On peut aussi importer en SAS une base d’un autre format à l’aide d’une procédure
PROC IMPORT (voir plus loin l’explication des procédures PROC).
Dans l'éditeur de programme, écrire les lignes de commande suivante :
Proc import datafile = "h:\SAS\rep_tables\base_etudiants1.xls"
out = tablesas.Base_etudiants1
dbms=xls
replace;
sheet ="Données";
getnames = yes;
mixed = yes;
Run ;
Descriptif des commandes:
-
Out = définit le libname et le nom de la table SAS créée
Dbms = détermine le type de fichier importé
Replace : remplace le fichier importé si un autre fichier du même nom a
déjà été importé
Sheet = commande appliquée pour un fichier source Excel, détermine le
nom de la feuille Excel importée
Getnames = indique la première ligne du fichier source comme ligne de
noms de variables
Mixed = permet d’importer sous la forme de variables « caractère » des
variables codées alternativement par des chiffres et des caractères selon
les observations
25
7. Edition d’une Table SAS
Avec SAS, il est possible d’observer à l’écran le contenu d’une base de données
enregistrée sous le format SAS (« .sas7bdat »). Pour cela on peut utiliser l’éditeur
de Table SAS.
• A partir du menu principal de SAS:
- Outils / Editeur de Tables SAS
• Dans le menu de l’éditeur de Table SAS :
- Icône Ouvrir :
- Choisir la Bibliothèque SAS dans laquelle se trouve la Table SAS à éditer
- Sélectionner la Table SAS dans la liste proposée, puis ouvrir.
26
Attention :
Pour pouvoir être modifiée ou pour en analyser le contenu, une Table SAS ne doit
pas être ouverte avec l’éditeur de table SAS. Il est nécessaire de fermer la fenêtre de
l’éditeur de table avant tout travail sur la Table.
Note :
Si la Table SAS n’apparaît pas :
- soit la Bibliothèque recherchée n’a pas été créée (où elle l’a été
temporairement) ; il faut donc la recréer en vérifiant qu’elle représente bien le
chemin d’accès à la Table SAS copiée sur le disque dur.
- soit la Table SAS n’a pas été copiée sur le disque dur à l’endroit
correspondant à la bibliothèque identifiée dans SAS.
Rappel :
Les Tables SAS doivent être copiées dans le disque dur à l’endroit qui sera ensuite
identifié lors de la création du libname (bibliothèque). Si les Tables ont été importées,
copiées ou générées temporairement dans la bibliothèque WORK, pour les éditer il
faudra aller les chercher dans la bibliothèque WORK.
Astuce :
Pour visualiser le contenu d’une Table SAS à l’aide de l’éditeur de Table, une autre
méthode consiste, à partir de la fenêtre de l’explorateur, à identifier la Table dans la
bibliothèque adéquate et à double-cliquer sur le nom de la Table. Ne pas oublier de
fermer la fenêtre de l’éditeur après visualisation.
27
II. Les premiers pas avec SAS
Il existe deux types de commandes avec SAS : Les procédures (PROC) et les
étapes DATA. Les PROC permettent de créer des résultats visibles dans la fenêtre
output (sortie) alors que les étapes DATA permettent, elles, de modifier les Tables
SAS (leur contenu ou leur forme).
1. Les procédures SAS – PROC
Les PROC sont des commandes générales de traitement. Elles permettent de
décrire ou d’éditer une Table, d’effectuer des traitements statistiques…
Les PROC génèrent (presque) toujours des résultats, des sorties dans la fenêtre
output.
Elles débutent par la commande PROC et se terminent pas la consigne d’exécution
RUN. Elles s’effectuent à partir d’un fichier de données, une Table que l’on identifie
par une commande DATA qui nomme la table de travail et la bibliothèque où elle se
trouve.
proc contents data=nom_libname.nom_table;
Exemple :
proc contents data=TABLESAS.repondant2;
Il existe plusieurs types de procédures (PROC), en voici quelques exemples :
- PROC CONTENTS : pour connaître le contenu d’une Table
- PROC PRINT : pour éditer à l’écran le contenu d’une Table
- PROC FREQ : pour réaliser des tableaux de distribution, tableaux croisés…
- PROC MEANS : pour calculer des moyennes…
- PROC IMPORT : pour importer des données en format SAS
2. Les Tables de données – DATA
Les Tables SAS peuvent être temporaires (elles sont supprimées lorsqu’on ferme la
session SAS) ou permanentes (sauvegardées dans une bibliothèque SAS).
- Les TABLES permanentes doivent figurées dans une bibliothèque SAS
créée (répertoire de travail identifié par un Libname).
- Les TABLES temporaires figurent par défaut dans la bibliothèque temporaire
de travail « WORK » (libname: work).
Exemples :
- On peut créer une Table temporaire (par défaut dans la bibliothèque work).
data test;
ou
data work.test;
L’absence de libname indique qu’une Table temporaire est générée dans work.
28
- On peut créer une Table permanente (dans la bibliothèque choisie).
data TABLESAS.test;
Une Table permanente est générée dans la bibliothèque TABLESAS.
3. Les programmes SAS
Les programmes de commande
SAS est un logiciel de programmation. Il est nécessaire d’écrire des lignes de
commande à partir d’une syntaxe spécifique puis de les lancer.
Ces lignes de commandes sont écrites dans l’éditeur de programme (fenêtre de
l’éditeur). Elles peuvent être sauvegardées sous la forme d’un programme à lancer
intégralement ou partiellement.
- pour écrire dans l’éditeur, cliquer sur la fenêtre de l’éditeur
- par défaut le nom du programme est « sans titre1 »
- pour sauvegarder, le programme de commande :
Menu : Fichier / Enregistrer ou Enregistrer sous
Définir le chemin d’accès où vous souhaitez sauvegarder votre fichier
programme.
- dans la barre de la fenêtre Editeur apparaît le nom du fichier.
- pour sauvegarder, vous pouvez aussi utiliser l’icône
de la barre de menu.
Remarque :
L’extension des fichiers de programme SAS est : « nom_fichier.sas ».
Lorsque vous apportez des changements au programme (écriture de nouvelles
lignes de commande) et que le fichier de programme n’a pas été sauvegardé, un
astérisque (*) apparaît à droite du nom du fichier. Il vous faut alors sauvegarder votre
fichier programme sous peine de perdre les changements que vous avez réalisés.
Vous pouvez « appeler » ou accéder directement à la fenêtre de l’éditeur grâce à la
touche de raccourci [F5].
Lancement de commandes ou d’un programme
On peut choisir de « lancer » l’ensemble d’un programme (tout le contenu du fichier
programme) ou seulement quelques lignes de commande d’un programme.
29
Pour lancer l’ensemble d’un programme, activer la fenêtre de l’éditeur (en cliquant
dessus) :
- presser la touche [F8]
- ou cliquer sur l’icône « soumettre » :
Pour lancer quelques lignes de commande, sélectionner en sur-brillant à l’aide de
la souris les lignes de commande :
- presser la touche [F8]
- ou cliquer sur l’icône « soumettre » :
4. La syntaxe SAS
Un programme SAS se compose de sections de programmation délimitées par des
lignes horizontales (cohérence d’une procédure).
libname TABLESAS "z:\SAS\rep_tables\";
proc contents data=TABLESAS.repondant2;
run;
data TABLESAS.test;
set TABLESAS.repondant2;
run;
Chaque ligne de commande, associée à une instruction, se termine par un pointvirgule « ; ».
Chaque groupe de commandes (ou procédure) se termine par l’expression « run ; ».
On peut alors exécuter l’ensemble du programme ou une partie seulement du
programme (séparée par des lignes horizontales).
L’ajout de commentaires dans un programme SAS
L’ensemble des caractères d’un programme ne constitue pas forcément des lignes
de commande. On peut écrire des commentaires dans un programme SAS (Editeur).
Il est même recommandé de toujours indiquer ce qui est réalisé au fur et à mesure
du programme, pour se souvenir de ce qui a été fait.
Les commentaires doivent être encadrés par un astérisque et un point-virgule (*
;)
* Texte du commentaire ;
Lorsque le commentaire contient un point-virgule ( ; ) ou plusieurs lignes, on encadre
le bloc de lignes de commentaire par deux slash et astérisques (/*
*/)
/* début du commentaire ; fin du commentaire */
30
Exemples :
* Description du contenu de la base ;
ou
/* Description du contenu de la base ;
Tableau de présentation des données */
5. PROC CONTENTS – Edition de Tables SAS
Visualisation du contenu d’une Table
La procédure PROC CONTENTS permet de visualiser le contenu d’une Table SAS.
On peut ainsi connaître le contenu de la Table, le nombre d’observations qu’elle
comprend, les variables qui y sont présentes ainsi que le format de celles-ci.
Lorsque cette procédure est lancée, une sortie écran permet de voir le contenu des
informations de la Table.
Par défaut, la liste des variables apparaît par ordre alphabétique.
proc contents data=TABLESAS.repondant2;
run ;
31
Visualisation du contenu d’une bibliothèque
On peut réaliser cette opération sur l’ensemble des Tables d’une bibliothèque (_all_).
On observe alors dans la sortie écran, l’ensemble des informations pour toutes les
Tables présentes dans une même bibliothèque (Libname).
proc contents data=tablesas._all_;
run;
Les options
La procédure PROC CONTENTS peut s’accompagner d’options.
L’option « short »
On peut choisir de ne visualiser que le nom des variables.
proc contents data=TABLESAS.repondant2 short ;
run ;
L’option « position »
On peut faire apparaître les variables dans l’ordre d’apparition dans la Table
(positionnement).
proc contents data=TABLESAS.repondant2 position ;
run ;
Astuce :
Si on souhaite rapidement retrouver une variable dans la liste alphabétique affichée
en Sortie, on peut exécuter une recherche avec CTRL F.
32
6. PROC SORT – Tri des données
Lors de la création d’une base de données, les observations sont le plus souvent
présentées dans l’ordre de leur saisie, souvent dans l’ordre croissant de l’identifiant
des observations : par exemple par le numéro de questionnaire (du questionnaire
n°1 ou dernier saisi).
Les observations peuvent cependant être triées selon d’autres critères que l’ordre
croissant du numéro d’identifiant. Ainsi, on peut choisir de présenter les observations
d’une Table d’enquêtés en distinguant en début de base les répondants femmes,
puis les répondants hommes. De même, on peut classer ensuite par ordre les
femmes et les hommes en fonction de leur âge : la Table se présentera alors avec
successivement les femmes les plus jeunes, jusqu’aux plus âgées, puis en fin de
Table, les hommes les plus jeunes, jusqu’aux plus âgés.
Lors de la visualisation des données, on verra alors les observations classées selon
l’ordre du tri effectué par la procédure PROC SORT.
Tri croissant
On peut trier les observations d’une Table selon les valeurs croissantes ou
décroissantes d’une ou plusieurs variables. La syntaxe « by nom_var1 nom_var2 ; »
définit l’ordre de tri : d’abord en fonction de la variable1 puis de la variable2 (dans
l’exemple qui suit par le sexe du répondant, puis par son âge).
proc sort data=TABLESAS.repondant2 ;
by ma_sexe ma_ager ;
run ;
Note :
Par défaut, le classement se fait par ordre croissant (alphabétique ou numérique).
Cette procédure (PROC SORT) est indispensable pour réaliser d’autres procédures
selon certains critères. Si vous souhaitez afficher à l’écran (voit plus loi : PROC
PRINT) les données en fonction d’un critère (en fonction du sexe du répondant par
exemple), alors il faudra au préalable trier la Table par ce critère (sexe du
répondant).
Attention :
Il n’y a aucune sortie écran du tri effectué (on ne voit donc pas le résultat du tri).
Pour vérifier, il faut observer le Journal.
33
Tri décroissant
On peut trier les observations d’une Table selon les valeurs décroissantes d’une ou
plusieurs variables. La syntaxe utilisera alors la commande (descending) placée
avant la variable triée de manière décroissante :
by variable1 descending varariable2 ;
Les observations seront d’abord classées selon la variable 1 de manière croissante,
puis selon la variable 2 de manière décroissante.
proc sort data=TABLESAS.repondant2 ;
by ma_sexe descending ma_ager ;
run ;
Vérification du tri des données
On peut vérifier le classement des observations suite au tri réalisé avec :
- l’éditeur de Table (ou avec la procédure PROC PRINT)
- la procédure de vérification du contenu (PROC CONTENTS)
Exemple de vérification avec une PROC CONTENTS :
proc contents data=TABLESAS.repondant2 ;
run ;
En fin de liste (Sortie SAS), apparaissent les informations sur le tri de la Table.
34
Création d’une table triée
On peut souhaiter générer une nouvelle Table à partir du tri de la Table source. On
disposera alors en plus de la Table initiale non triée d’une nouvelle Table triée selon
les critères spécifiés lors de la PROC SORT à laquelle on ajoutera l’option : out =
nom_libname.nom_nouvelleTable
proc sort data=TABLESAS.repondant2
out = work.repondant2_tri;
by ma_sexe descending ma_ager ;
run ;
7. PROC PRINT– Edition des données SAS
Pour connaître le contenu d’une Table SAS, vérifier la codification des variables (les
modalités), on peut éditer la Table à l’aide d’une Procédure SAS (PROC PRINT).
C’est une des manières d’explorer la Table.
Edition complète de Table SAS
La procédure PROC PRINT permet de faire apparaître à l’écran (fenêtre de sortie)
les valeurs des variables d’une Table. Elle permet notamment de vérifier la
codification et la cohérence des données.
proc print data=TABLESAS.repondant2 ;
run ;
Attention :
La procédure s’exécute pour l’ensemble des variables de la Table. Il est donc
déconseillé de procéder comme cela pour des Tables disposant de nombreuses
variables (comme la Table « repondant2 »). On procède alors à une édition partielle
de la Table, on sélectionne alors les variables sur lesquelles on souhaite appliquer la
procédure.
Interrompre l’exécution :
Si toutefois vous avez lancé l’instruction print sans préciser les variables à faire
apparaître et que SAS « mouline » sans succès, vous pouvez interrompre l’exécution
de la commande en ouvrant le Gestionnaire de tâches de SAS grâce à l’icône
Interrompre
dans le menu principal ou les touches du clavier [Ctrl+Pause].
Les menus suivants apparaitront. Choisissez successivement les options de réponse
1 et Y.
35
Edition partielle de Table SAS
Il est rare de devoir observer l’intégralité du contenu d’une Table SAS, mais plutôt
une partie seulement de la Table en ne choisissant que quelques variables à faire
figurer dans l’édition. Cette procédure est souvent utilisée après la construction de
variables. Elle permet de vérifier ce qui a été réalisé.
On définit les variables à faire figurer à l’aide d’une ligne de commande :
var nom_var1 nom_var2 nom_var3…;
Exemple :
proc print data=TABLESAS.repondant2 ;
var ident ma_anais ma_ager ma_sexe mc_diplome ca_mdebcoh
ca_adebcoh ca_marie ca_pacs ;
run ;
Remarque :
Une même ligne de commande peut être écrite sur deux lignes successives de
programme (ex : liste de variables) sans conséquence ; la syntaxe de la ligne de
commande étant définie par le point-virgule ( ; ).
36
Les options
La procédure PROC PRINT peut être accompagnée d’options.
L’option (obs=nombre)
On peut choisir de ne montrer qu’un certain nombre d’observations. Ainsi, les n
premières observations seront éditées : (obs=nombre_observations). Cette option
est intéressante dès lors que l’échantillon est important.
Exemple :
proc print data=TABLESAS.repondant2 (obs=8);
var ident ma_anais ma_ager ma_sexe mc_diplome;
run ;
L’option noobs
On peut choisir de ne pas faire apparaître le rang d’observation désignant la ligne
dans la Table SAS (obs : ligne des observations de la Table) : noobs
Exemple :
proc print data=TABLESAS.repondant2 (obs=8) noobs ;
var ident ma_anais ma_ager ma_sexe mc_diplome;
run ;
L’option Label
On peut choisir de faire apparaître les labels (« étiquettes ») des variables au lieu de
ne faire juste apparaître que les noms des variables : label
Exemple :
proc print data=TABLESAS.repondant2 (obs=8) label ;
var ident ma_anais ma_ager ma_sexe mc_diplome;
run ;
37
Avec label
Sans Label
Edition d’observations triées
On peut afficher les données d’une Table SAS en ne faisant apparaître que quelques
variables comme précédemment (sélection de variables avec la commande
« var … ;»), mais aussi en classant les observations selon une variable de tri. Pour
cela, on peut utiliser la commande « id » ou « by ».
Les sorties (édition) diffèrent un peu : avec « id » les observations se suivent dans le
listing classées selon la modalité de tri, avec « by » les observations sont présentées
dans autant de listing séparés que de modalités de la variable de tri.
Note:
Il faut pour cela avoir trié la Table selon la(es) variable(s) de tri choisie(s).
38
Exemples :
Avec « id ma_sexe ; »
proc print data=TABLESAS.repondant2 ;
var ident ma_sexe ma_act;
id ma_sexe;
run;
à affichage ordonné selon la variable ma_sexe
Avec « by … ; »
proc print data=TABLESAS.repondant2 ;
var ident ma_sexe ma_act;
by ma_sexe;
run;
à tableaux séparés selon « sexe » (nécessité avant d’une PROC SORT)
Ajouter un titre
On peut ajouter un titre au listing généré avec l’instruction : = title «texte » ;
Cette instruction pourra être utilisée dans d’autres procédures, la PROC FREQ
notamment.
proc print data=TABLESAS.repondant2 ;
var ident ma_sexe ma_act;
title « liste du contenu des variables sélectionnées »;
run;
39
Synthèse de variables numériques
Pour les variables numériques, on peut choisir de faire la somme des valeurs d’une
variable spécifique qui apparaît dans la liste : sum var_num;
Exemple :
proc print data=TABLESAS.repondant2 ;
var ident ma_sexe ma_act nbenftot;
sum nbenftot;
run;
Ainsi, à la fin du listing apparait le total (somme) de la variable numérique
sélectionnée pour l’ensemble des observations, ici le nombre total d’enfants pour
tous les répondants apparaissant dans le listing.
…………………………………………………..
8. Opérateurs de conditions
On peut choisir de n’éditer (ne faire apparaître) que les données (observations)
répondant à certaines conditions (observations = ou ≠ à certaines valeurs).
On procède alors à une sélection des observations en fonction de conditions définies
à partir des valeurs de variables choisies. Ainsi, on peut n’éditer que les observations
d’une sous-population. Par exemple : les femmes, on sélectionne alors toutes les
observations qui répondent à la modalité « femme » pour la variable « sexe ».
40
2 syntaxes possibles :
(where=(sexe = « F » and age = 20))
where sexe=« F » and age = 20;
à à la suite de « PROC… »
à sur une nouvelle ligne
Exemple de la syntaxe 1:
proc print data=Table (where=(sexe="F" and age = 20));
var var1 var2 var3 var4;
run;
Exemple de la syntaxe 2:
proc print data=Table;
var var1 var2 var3 var4;
where (sexe ="F" and age = 20); à les () sont facultatives
run ;
Les minuscules et les majuscules sont importantes pour les valeurs des variables
alphanumériques. Il faut donc bien les respecter.
Opérateurs de conditions avec « WHERE » et « IF »
Dans l’écriture des lignes de commande comprenant des conditions « WHERE »,
« IF », il existe une syntaxe permettant de préciser les termes des conditions
choisies.
Remarque :
Pour l’écriture des conditions des variables alphanumériques (texte), il convient de
mettre entre guillemets « » les valeurs des variables.
Pour l’écriture des conditions des variables numériques, les valeurs ne sont pas
encadrées de guillemets « ».
Tableau des opérateurs :
=
NE ; ^= ; !=
égal (age = 30 ; age = « <30 »)
différent (ville NE « Paris » ; ville NE 75)
> ; >= ; < ; <=
supérieur (ou égal) ; inférieur (ou égal) (age>=45)
BETWEEN
entre deux bornes numériques incluses (age BETWEEN 10 and
30)
IN
correspond aux valeurs (=)
41
(dept IN (« 22 » « 29 » « 35 »)
(dept IN (« 22 » ; « 29 » ; « 35 »)
(dept IN ( 22 29 35 ) à var. num.
LIKE
identifie, pour une variable donnée, toutes les observations ayant
une modalité contenant certains critères
(prenom LIKE ‘AN_E’ (ex: anne, ange)
(prenom LIKE ‘AN%E’ (ex: anne, annie)
(prenom LIKE ‘%AN%’ (ex: bertrand, ange)
_ : remplace un caractère
%: remplace plusieurs caractères
=:
identifie les modalités commençant par une chaîne de caractères
(num_secu = : « 2 »)
IS MISSING
NOT
identifie les valeurs manquantes (pcs IS MISSING)
contraire de la condition définie (not (pcs IS MISSING)
(pcs IS NOT MISSING)
AND
associe deux conditions (sexe = « F » AND age = age<20)
OR
une condition ou une autre (pcs = « 2 » OR pcs = « 4 »)
Ces opérateurs s’utilisent tant dans les PROC que dans les étapes DATA. La
syntaxe est spécifiée systématiquement. Certains s’utilisent seulement avec
l’instruction where et non if.
42
III. Traitements des Tables SAS
1. L’étape DATA
L’étape DATA est une étape fondamentale puisqu’elle permet de modifier le contenu
des Tables SAS (structure, contenu, format…).
Contrairement aux procédures PROC, l’étape DATA ne génère pas de résultats mais
modifie le contenu ou la forme des Tables SAS.
Au sein d’étapes DATA, on peut :
- créer de nouvelles Tables SAS,
- modifier des données (leur contenu ou leur format),
- supprimer, ajouter des observations ou des variables,
- recoder, renommer des variables,
- jonction, fusion de Tables SAS.
Une étape DATA débute et se termine par les instructions :
data …;
run ;
L’instruction DATA doit automatiquement être suivie d’un nom de Table car l’étape
DATA génère une Table de sortie.
data TABLESAS.Table1;
à Table d’écriture, Table de sortie,
Nouvelle Table
run;
Dans le cas présent, la Table créée est vide (aucun intérêt).
Remarque :
Si vous utilisez le nom d’une Table existante, la précédente sera écrasée.
2. Création d’une Table SAS
Création d’une Table à partir d’une autre Table
C’est l’opération la plus fréquente. On réalise une étape DATA pour créer une
nouvelle Table (écriture ou sortie) à partir d’une Table déjà existante (lecture ou
entrée).
On créé donc la nouvelle Table, avec l’instruction « data… ; » et on nomme la Table
existante à partir de laquelle la nouvelle Table sera créée, avec l’instruction
« set… ; ».
43
On peut alors créer une nouvelle Table permanente en spécifiant la bibliothèque
dans laquelle la Table sera créée, ou une Table temporaire qui sera créée par
défaut dans la bibliothèque temporaire WORK.
Création d’une Table permanente :
data TABLESAS.Table2;
set TABLESAS.repondant2;
run;
à création d’une Table permanente
à à partir d’une Table permanente
Création d’une Table temporaire:
data Table2;
set TABLESAS.repondant2;
run;
à création d’une Table temporaire
à à partir d’une Table permanente
3. Extraction d’une Table SAS : KEEP – DROP – WHERE – IF
La création d’une nouvelle Table SAS à partir d’une Table existante s’appelle une
extraction.
On peut :
- ne sélectionner que quelques variables pour travailler sur l’ensemble des
observations,
- ne sélectionner qu’une sous-population et alors ne travailler que sur
quelques observations de la Table,
- coupler les deux conditions pour ne travailler que sur quelques variables
d’une partie des observations.
Sélection de variables : KEEP – DROP
On souhaite créer une nouvelle Table avec seulement quelques variables de la
Table existante.
On utilise les instructions KEEP (garder) / DROP (supprimer) avec le nom des
variables
data TABLESAS.Table2;
set TABLESAS.repondant2;
keep ident ma_sexe;
run ;
data TABLESAS.Table2;
set TABLESAS.repondant2;
drop dep rg;
run
44
à garde ces variables
à supprime ces variables
Autres syntaxes possibles
D’autres syntaxes peuvent être utilisées.
Sélection en lecture :
data TABLESAS.Table2;
set TABLESAS.repondant2 (keep=ident ma_sexe);
run ;
Sélection en écriture :
data TABLESAS.Table2 (keep=ident ma_sexe);
set TABLESAS.repondant2;
run ;
NB: La sélection en lecture représente moins de travail pour le logiciel.
Options pour les instructions KEEP / DROP
Il existe des options aux instructions KEEP et DROP qui permettent de ne pas avoir
à écrire l’ensemble des noms de variables, surtout lorsque celles-ci ont des
caractéristiques communes (nom, type/format…).
On peut identifier un ensemble de variables à conserver ou à supprimer grâce à ces
options.
KEEP var1 - - var10 ;
à garde les variables entre var1 et var10 (en fonction
de leur ordre – tri dans la Table)
KEEP var1 - var10 ;
à garde les variables dont les noms sont entre var1 et
var10 (numérotation)
KEEP var : ;
à garde toutes les variables dont les noms
commencent par var
DROP _ALL_ ;
à supprime toutes les variables de la Table
DROP _NUMERIC_ ;
à supprime toutes les variables numériques
DROP _CHARACTER_ ; à supprime toutes les variables alphanumériques
Sélection des observations (filtre) : WHERE – IF
On souhaite créer une nouvelle Table à partir d’une Table existante avec seulement
les observations qui répondent à certaines conditions (sélection d’une souspopulation).
On utilise l’instruction WHERE (où, quand).
45
2 syntaxes :
è Filtre dans la Table d’écriture
data TABLESAS.Table2;
set TABLESAS.repondant2;
where ma_sexe="1" and ma_ager=20;
run ;
è Filtre dans la Table de lecture
data TABLESAS.Table2;
set TABLESAS.repondant2 (where=(ma_sexe="1" and
ma_ager=20));
run ;
On peut placer l’instruction « where… » lors de la création de la nouvelle Table dans
l’étape DATA proprement dite (1er cas). Le filtre opère une fois les données lues. Si
l’instruction « where… » est placée lors de la lecture de la Table initiale (2e cas), le
filtre opère en amont, avant l’importation des données.
4. Suppression d’observations: IF… THEN DELETE
On peut modifier le contenu d’une nouvelle Table SAS au cours de l’étape DATA de
sa création en supprimant des observations pour ne retenir qu’une partie d’entre
elles.
On peut aussi souhaitez simplement à partir d’une Table ne conserver que certaines
observations. Cette opération nécessite de passer par une étape DATA dans
laquelle une Table est générée.
Rappel :
Si la nouvelle Table créée porte le même nom que celle à partir de laquelle est
réalisée l’extraction, alors la version antérieure sera « écrasée ».
L’instruction IF… THEN DELETE
On utilise dans l’étape DATA l’instruction « IF… THEN DELETE » pour supprimer les
observations qui répondent aux critères mentionnés.
Exemple 1:
On supprime les observations lorsque des variables ne sont pas codées (missing
value = « . » (num); « espace » (alphanum.), Table3 = temporaire)
Data Table3;
set TABLESAS.base_etudiants2;
if age=. or niv_dip="" or ufr="" then delete;
run ;
46
Table base_etudiants2 :
Table Table3 :
(vérifications faites avec une PROC PRINT)
Exemple 2:
On supprime toutes les observations qui correspondent à des répondants
« femmes » (variable sexe codée 2, Table4 = temporaire).
Data Table4;
set TABLESAS.base_etudiants2;
if sexe=2 then delete;
run ;
47
5. Renommer et libeller les variables : RENAME – LABEL
Comme précédemment pour l’extraction d’observations, pour renommer ou libeller
les variables d’une Table SAS, il est nécessaire de passer par une étape DATA.
Renommer – Modifier le nom des variables : RENAME
On souhaite renommer les variables d’une Table (changer le nom des variables). On
utilise l’instruction RENAME
rename ancien_nom_var=nouveau_nom_var ;
Exemple 1: (table5 = temporaire)
data Table5;
set TABLESAS.repondant2;
rename ma_sexe=sexe ma_ager=age;
run ;
L’instruction RENAME peut être combinée à d’autres instructions de l’étape DATA,
comme la sélection de variables et d’observations.
Exemple 2: (table6 = temporaire)
data Table6;
set TABLESAS.repondant2 (where=(ma_sexe="1"));
keep ident ma_sexe ma_ager;
rename ma_sexe=sexe ma_ager=age;
run ;
Libeller – attribuer une étiquette : LABEL
Au sein des Tables SAS, les variables sont représentées par leurs noms (des
abréviations, un code ou un numéro de question…). On peut choisir d’attacher un
libellé, une étiquette à chacune (ou à certaines) des variables afin que lors de la
réalisation d’un listing ou d’un tableau de distribution, un intitulé intelligible
apparaisse à la place du nom de la variable. Créer un libellé ne modifie pas le nom
de la variable. Celui-ci reste le même dans la Table SAS.
On utilise l’instruction :
ou
LABEL nom_var= libellé ;
ATTRIB nom_var LABEL=« libellé »;
Attention :
Pour cette seconde écriture les « » qui encadrent le nouveau libellé sont
nécessaires.
48
Exemple syntaxe 1 :
data Table7;
set TABLESAS.repondant2;
label ma_sexe= SEXE DU REPONDANT ma_ager=AGE DU
REPONDANT;
run ;
Exemple syntaxe 2 :
data Table8;
set TABLESAS.repondant2;
attrib ma_sexe label="SEXE DU REPONDANT" ma_ager
label="AGE DU REPONDANT";
run ;
Renommer et libeller conjointement les variables
On peut souhaiter renommer des variables et en même temps leur affecter des
étiquettes.
Attention :
Lorsqu’on souhaite attribuer un nouveau libellé à une variable que l’on renomme
dans la même étape data, il est nécessaire de conserver l’ancien nom de variable
de la variable.
Exemple :
data Table9;
set TABLESAS.repondant2;
rename ma_sexe=SEXE;
label ma_sexe=SEXE DU REPONDANT; à ma_sexe = ancien nom
run ;
On peut bien sûr renommer et libeller plusieurs variables dans la même étape data.
Une autre solution consiste à procéder en deux étapes data, mais cette option n’est
pas recommandée.
Exemple en deux étapes DATA :
Etape1 : renommer la variable
Etape 2 : attribution du label
data Table9;
set TABLESAS.repondant2;
rename ma_sexe=SEXE;
run ;
data Table9;
set Table9;
label SEXE=SEXE REPONDANT;
run ;
à on renomme la variable.
à utilisation du nouveau nom de la
variable.
49
On remarque que lors de la seconde étape, le nom de Table en lecture (Table
initiale) et celui de la Table en écriture (nouvelle Table) sont les mêmes. La nouvelle
Table générée « écrasera » donc la précédente.
Utilisation de l’instruction LABEL
L’instruction LABEL est ensuite utilisée dans certaines procédures pour faire
apparaître les libellés des variables.
On peut l’utiliser dans la procédure PROC PRINT.
Exemple :
proc print data=tablesas.repondant2 (obs=5) label;
var ident ma_sexe ma_ager;
run;
Exemple avec l’instruction Label :
Exemple sans l’instruction Label :
50
6. Création de variables
On peut souhaiter créer une ou plusieurs variables dans une Table SAS. Cette
opération se réalise une fois de plus dans une étape DATA.
On nomme ainsi la nouvelle variable créée en lui attribuant les modalités désirées.
On peut aussi dans cette même étape data lui donner un libellé (label…).
Exemple « simpliste »:
data Table10;
set tablesas.repondant2;
NEW_VAR=.;
label new_var=NOUVELLE VARIABLE;
run;
Dans la Table temporaire Table10, on crée la variable new_var. Cette opération n’a
aucun intérêt puisqu’elle génère une nouvelle variable numérique dont toutes les
modalités ont été codées « . » (missing: données manquantes) pour l’ensemble des
observations de la table.
Remarque :
En attribuant la valeur « . » à la variable new_var créée, cette variable est
automatiquement générée comme étant une variable numérique. Si lors de la
création de la variable, la modalité attribuée avait été « » (sans aucun caractère, ou
avec un espace entre les « »), la variable aurait été générée comme une variable
alphanumérique (texte).
Création de variables sous conditions :
If … then / Else if / Else
En général, on crée une nouvelle variable selon certaines conditions en attribuant les
modalités voulues pour les observations répondant à ces conditions.
Pour définir ces conditions, on utilise les instructions :
if … then / else if / else
On associe ces instructions aux opérateurs WHERE / IF.
NB: l’instruction else signifie “dans tous les autres cas”, autres que ceux énoncés
précédemment.
51
Exemple 1 :
Si la variable ne comprend que deux modalités (homme / femme), on crée la variable
SEXE_REP à partir de la variable ma_sexe (codée: 1 ou 2).
En indiquant entre « » les modalités de la nouvelle variable sexe_rep, on suggère
qu’elle sera automatiquement créée comme une variable alphanumérique.
data table11;
set tablesas.repondant2;
if ma_sexe=1 then sexe_rep="h";
else sexe_rep="f";
label ma_sexe=SEXE DU REPONDANT;
run;
Exemple 2 :
Si la variable initiale peut avoir plusieurs modalités de réponse, on peut générer la
nouvelle variable alphanumérique sexe_conj en attribuant une modalité « h » lorsque
la variable numérique initiale ca_sexec est codée 1, une modalité « f » lorsque la
variable ca_sexec est codée 2, et une autre modalité « n » (non renseigné) pour
toutes les autres observations pour lesquelles la variable ca_sexec est codée par
autre chose que 1 ou 2 (notamment par un point, comme valeur manquante).
data table11;
set tablesas.repondant2;
if ca_sexec =1 then SEXE_CONJ="h";
else if ca_sexec =2 then SEXE_CONJ="f";
else SEXE_CONJ="n";
label sexe_conj=SEXE DU CONJOINT COHABITANT;
run;
Dans cet exemple, pour les répondants qui n’auront pas de conjoint cohabitant ou
pour ceux dont on ne connait pas le sexe du conjoint cohabitant, la nouvelle variable
sexe_conj sera codée « n » (non renseigné).
Autres exemples:
Les lignes de programme qui suivent ne représentent qu’un même bloc d’une étape
data. On peut ainsi générer et libeller plusieurs variables en une seule étape data.
data table12;
set tablesas.repondant2;
if ma_sexe=2 and 14<ma_ager<=49 then FEM_AG_PROC=1;
else fem_ag_proc=0;
label fem_ag_proc=FEMMES EN AGE DE PROCREER;
if ma_sexe ne 2 then homme="oui";
else homme="non";
label homme=repondant homme;
if ma_sexe=1 and ma_ager<20 then AGE_HOM="hom–40";
else if ma_sexe=1 and ma_ager>=20 then AGE_HOM="hom40+";
else AGE_HOM="fem";
label AGE_HOM=CLASSE AGE HOMMES;
run;
52
Création de variables par une opération
On peut créer une nouvelle variable numérique à partir d’une opération faisant
intervenir d’autres variables numériques existantes.
Cette création s’effectue dans une étape data.
Pour illustrer la création de telles variables numériques, nous nous appuierons sur
les variables de revenus de l’enquête ERFI (variables : aj_mreve_1…,
rj_mreve_1…).
Attention :
Pour la création de variables numériques à partir d’une opération, il faut avant tout
vérifier que les variables initiales utilisées pour les calculs sont bien de type
« numérique ». De même, il est important d’avoir connaissance du contenu des
valeurs des variables utilisées.
Par exemple, dans l’enquête ERFi les variables de revenus aj_mreve_1… et
rj_mreve_1… sont pour certaines observations codées 999999 ou 9999999, ou sont
parfois manquantes, codées par un point. Dans les deux premiers cas, il se peut que
le répondant n’ait pas souhaité répondre à la question (refus) ou qu’il n’ait pas
connaissance de la somme. La variable peut alors avoir été codée avec une série de
9 (pas de réponse à la question). De même, la question peut ne pas avoir été posée
à certains répondants parce qu’ils ont déclaré avant de pas avoir de revenu. Dans ce
cas, la variable peut avoir été codée par un point, signifiant ainsi « donnée
manquante ».
Si une telle vérification n’est pas réalisée en amont, alors la nouvelle variable créée
sera erronée.
Exemple 1: Variable numérique « Somme »
Dans l’exemple qui suit une variable représentant le total des revenus déclarés est
construite à partir des quatre variables de revenus présentent dans l’enquête.
L’enquêté pouvait en effet déclarer jusqu’à quatre revenus différents (aj_mreve_1 à
aj_mreve_4).
Étape 1 : création de variables intégralement codées en numérique
La première étape consiste à mettre « au bon format » les modalités de réponse de
l’ensemble des observations et ainsi recoder les variables pour les observations où
des non-réponses, des refus ou des données manquantes seraient observées.
Pour cela, le plus simple revient à générer de nouvelles variables (rev1 à rev4),
corrigeant les variables de revenus initiales aj_mreve_1 à aj_mreve_2.
Dans cet exemple, nous avons choisi de coder les non-réponses, les refus et les
données manquantes par la valeur 0 (aucun revenu). Un tel choix doit être justifié car
il peut avoir ensuite une incidence forte sur l’analyse future des résultats.
53
Étape 2 : création d’une variable par addition
Une fois les quatre variables de revenus créées (rev1 à rev4), la deuxième étape
consiste à créer une nouvelle variable « tot_rev » qui représente la somme des
valeurs des quatre précédentes variables.
Ces deux étapes peuvent être rassemblées en une même étape data comme suit :
data table13;
set tablesas.repondant2;
if aj_mreve_1>=999999 or aj_mreve_1=. then rev1=0;
else rev1=aj_mreve_1;
if aj_mreve_2>=999999 or aj_mreve_2=. then rev2=0;
else rev2=aj_mreve_2;
if aj_mreve_3>=999999 or aj_mreve_3=. then rev3=0;
else rev3=aj_mreve_3;
if aj_mreve_4>=999999 or aj_mreve_4=. then rev4=0;
else rev4=aj_mreve_4;
TOT_REV=rev1+rev2+rev3+rev4;
label TOT_REV=SOMME DES REVENUS DU REPONDANT;
run;
Pour vérifier la création des variables générées, il faut regarder le contenu du journal
car aucune sortie SAS n’est proposée. On peut aussi réaliser une PROC PRINT.
Exemple 2: Variable numérique « Rapport »
Dans l’exemple qui suit, une variable représentant la proportion (rapport) du nombre
des enfants actuellement vivants du répondant par rapport au nombre total d’enfants
eu par le répondant est créée.
Une nouvelle fois, il convient avant tout de vérifier la construction et codification des
deux variables initiales (nbenfvie et nbenftot).
data table14;
set tablesas.repondant2;
rap_enf_vie=nbenfvie/nbenftot;
run;
Ce rapport est exprimé en unité. Il est possible de construire cette même variable en
l’exprimant en pourcentage. Pour cela, il convient d’ajouter *100.
data table14;
set tablesas.repondant2;
rap_enf_vie=nbenfvie/nbenftot*100;
run;
54
Création de variables dichotomiques
L’action de dichotomiser s’applique seulement aux variables qualitatives.
Par convention, la variable créée sera codée automatiquement 1 lorsque les
observations rempliront la condition définie (une modalité de la variable adoptée).
Pour les autres observations, la variable sera codée 0 par défaut.
Cette opération est très utile dans l’utilisation des modèles de régression.
Exemple :
data table15;
set tablesas.repondant2;
homme=(ma_sexe=1);
femme=(ma_sexe=2);
run;
Dans ce cas, l’étape DATA permet de créer simultanément deux variables :
à la variable: homme = 1 lorsque sexe =1 (sinon homme = 0).
à la variable: femme = 1 lorsque sexe =2 (sinon femme = 0).
7. PROC FORMAT – Format de variables
Avec SAS, on peut créer des formats de variables que l’on peut appliquer sur des
Tables. Les formats SAS sont indépendants des Tables SAS mais peuvent être
mobilisés pour l’exploitation des Tables. Un même format SAS peut être utilisé pour
deux Tables SAS différentes lorsque les variables des Tables sont codées selon des
modalités similaires.
Si une enquête a permis de créer une base de données dans laquelle la
caractéristique sociodémographique du sexe de l’enquêté est codée 1 (homme) et 2
(femme) et dans une autre enquête la caractéristique d’une variable « sexe du chef
d’entreprise » est codée de la même manière, 1 (homme) et 2 (femme), alors le
même format (« Sexe ») pourra être utilisé dans l’exploitation des deux Tables SAS.
Ainsi par exemple, lors de la présentation de tableaux de données, si on choisit
d’appliquer le format « Sexe » aux traitements des deux variables citées plus haut,
alors dans les tableaux apparaitront les mêmes intitulés « homme » et « femme »,
plutôt que « 1 » et « 2 ».
Créer un format pour les modalités des variables
On peut créer un intitulé pour une modalité (1 = homme) ou un même intitulé pour
plusieurs modalités alphanumériques (cadre, employé… = actif / au foyer,
étudiant…= inactif) ou numériques (0, 1, 2, 3…= « moins de 5 ans » ; 5, 6, 7… = « de
5 à 9 ans » …).
55
Attention :
Une variable peut être codée par un chiffre (1 ; 2) mais correspondre à une variable
de type numérique. Il est alors nécessaire de créer un format pour une variable de
type alphanumérique (ex : ma_sexe).
Démarche :
Pour créer ces formats, on utilise la procédure PROC FORMAT … et l’instruction
VALUE. Cette instruction est suivie directement du nom du format si le format créé
s’applique à une/des variable(s) numérique(s) (les modalités codées
numériquement).
L’instruction VALUE est suivi d’un dollar ($), si le format s’applique à une/des
variable(s) alphanumérique(s) (les modalités codées en texte).
Dans les deux cas, l’intitulé suit la modalité de la variable avec un = suivi entre
guillemets « » du contenu de l’intitulé.
Plusieurs formats peuvent être créés dans une même procédure PROC FORMAT.
Cependant, la définition de chaque format débute par « VALUE » et se termine par
un point virgule « ; ».
Exemple :
proc format ;
value nb_enf
low-<1="aucun enfant"
1="1 enfant"
2="2 enfants"
3-high="3 enfants et +";
value $sexe
"1"="homme"
"2"="femme" ;
value $region
"11"="région parisienne"
other="autres régions" ;
run ;
à variable numérique
à variable alphanumérique
à variable alphanumérique
Options
Il existe des options à utiliser dans les PROC FORMAT pour simplifier la définition du
champ des modalités : modalités comprises entre X et Y, modalités commençant par
« X »…
56
à Variables numériques
proc format ;
value nom_var
mod1 =« catégorie1 »
mod2, mod3, mod4 =« catégorie2 »
mod5-mod10 = « catégorie3 » ;
run;
à 1 modalité
à plusieurs modalités
à intervalle de modalités
(bornes incluses)
à Variables alphanumériques
proc format ;
value $nom_var
« mod1 » =« catégorie1 »
« mod2 », « mod3 » =« catégorie2 » ;
run;
à 1 modalité
à plusieurs modalités
Opérateurs :
Certains opérateurs peuvent être utilisés dans la définition du champ des modalités
(LOW, HIGH, OTHER).
low : la plus petite valeur (ou manquantes)
high : la plus grande valeur
other : autres valeurs (num. et alpha.)
- : entre deux bornes incluses
< : exclut la borne (inf. ou sup.)
Formats temporaires
Par défaut, les formats sont enregistrés dans un fichier formats.sas7bcat de la
bibliothèque temporaire WORK. Ils sont effacés à la fin de la session.
Les formats peuvent être visualisés à partir de l’explorateur SAS dans le répertoire
Bibliothèque (SAS) au sein de la bibliothèque où ils sont créés, ici WORK / Formats.
57
Exemple :
Remarque :
Si les formats sont créés temporairement par des lignes de commande dans un
programme, il est nécessaire de relancer à chaque fois ces mêmes lignes de
commande de PROC FORMAT lors d’une nouvelle session pour que les formats
souhaités puissent être à nouveau créés et utilisés. On voit tout l’intérêt de l’écriture
de lignes de commande au sein d’un programme enregistré, dont certaines lignes de
commande peuvent être relancées indépendamment du reste du programme lors
d’une nouvelle session SAS.
Utilisation des Formats temporaires
Lors de l’utilisation des formats dans des procédures (PROC PRINT ou PROC
FREQ), il faut ajouter : format nom_var nom_format. ;
Attention :
Le nom de format est suivi d’un point. C’est ainsi que SAS reconnait qu’il s’agit du
nom d’un format. Pour les variables et les formats alphanumériques, il convient de ne
pas oublier le $ au début du nom du format.
Exemple :
proc print data=TABLESAS.repondant2;
var ident ma_sexe nbenftot RG;
format ma_sexe $sexe. nbenftot nb_enf. RG $region.;
run;
58
NB : On peut appliquer un même format à plusieurs variables dans une procédure.
Exemple :
proc print data=TABLESAS.repondant2;
var ident ma_sexe ca_sexec cb_sexec;
format ma_sexe ca_sexec cb_sexec sexe.;
run;
Formats permanents
Les formats peuvent être créés de manière permanente. Ils seront alors enregistrés
pour les réutiliser dans une autre session ou pour être copiés.
Lors de l’écriture de la PROC FORMAT, il convient d’ajouter l’option :
LIBRARY=nom_libname
Exemple pour la bibliothèque TABLESAS :
proc format library=TABLESAS;
(ou)
proc format library=TABLESAS.formats;
Dans l’explorateur SAS, les formats permanents apparaitront dans la Bibliothèque
qui aura été identifiée lors de leur création.
proc format library=tablesas;
value $sexe
"1"="homme"
"2"="femme" ;
run ;
59
Exemple pour la bibliothèque TABLESAS :
Utilisation des Formats permanents
Si on a choisi de sauvegarder les formats dans une bibliothèque, lors de l’utilisation
des formats dans des procédures (PROC PRINT ou PROC FREQ), il faut préciser la
bibliothèque au sein de laquelle SAS doit chercher les formats car par défaut il va les
chercher dans WORK.
Avant l’écriture de la procédure, il faut ajouter l’option :
options FMTSEARCH=(libname.formats) :
Exemple :
options fmtsearch=(TABLESAS.formats) ;
proc print data=TABLESAS.repondant2;
var ident ma_sexe ca_sexec cb_sexec;
format ma_sexe ca_sexec cb_sexec $sexe.;
run;
NB : Une fois que la commande fmtsearch a été exécutée, il n’y a pas besoin de la
relancer lors de la session à moins d’avoir créé un nouveau format.
60
8. Supports de variables
Il existe deux types de supports de variables dans SAS:
– les supports caractères
– les supports numériques
Remarque: une variable quantitative n’est pas forcément stockée dans un support
numérique, ni une variable qualitative dans un support caractère.
Voici des exemples tirés du dictionnaire des codes de l’enquête ERFI :
-
Une variable quantitative codée par des nombres dans un support (ou
format) numérique.
-
Une variable qualitative codée par des nombres dans un support (ou
format) caractère
-
Une variable qualitative codée par du texte dans un support (ou format)
caractère
Les enquêtes de l’INSEE n’ont pas l’habitude de coder les modalités de variables
avec du texte, aucune variable de ce type ne figure dans l’enquête ERFI.
Toutefois, avec les instructions suivantes, on crée ce type de variable :
data table16;
set tablesas.repondant2;
if ca_sexec =1 then SEXE_CONJ="h";
else if ca_sexec =2 then SEXE_CONJ="f";
else SEXE_CONJ="n";
label sexe_conj=SEXE DU CONJOINT COHABITANT;
run;
61
Finalement, pour connaître le type de support, il est nécessaire d’explorer la Table
SAS et chacune des variables. Le support ne détermine pas le type de la variable.
Définir la longueur des supports
Les supports (ou format) sont indispensables pour créer de nouvelles variables. Leur
longueur est définie par l’option lenght :
Lorsque l’on crée une variable, et donc un support, il peut être judicieux de spécifier
la longueur du support par l’instruction lenght.
Length Nom_variable_caractere $8. ;
Lenght Nom_variable_numérique 8. ;
Le $ indique que la variable est de type caractère, son absence que la variable est
numérique. Le nombre définit la longueur du support de la variable.
Par défaut, un support numérique comporte 8 cases. Lorsqu’une variable est créée
dans un support caractère, la longueur de celui-ci est définie, par défaut, par le
nombre de case du premier support créé lors de la lecture de la table. Si le nombre
de caractère varie d’une modalité à l’autre, certaines risquent alors d’être tronquées
et induire des erreurs.
Exemple :
data table17;
set tablesas.repondant2;
Length aget5 $2.;
if ma_ager<25 then aget5="1";
if 25<=ma_ager<30 then aget5="2";
if 30<=ma_ager<35 then aget5="3";
if 35<=ma_ager<40 then aget5="4";
if 40<=ma_ager<45 then aget5="5";
if 45<=ma_ager<50 then aget5="6";
if 50<=ma_ager<55 then aget5="7";
if 55<=ma_ager<60 then aget5="8";
if 60<=ma_ager<65 then aget5="9";
if 65<=ma_ager<70 then aget5="10";
if 70<=ma_ager<75 then aget5="11";
if 75<=ma_ager<80 then aget5="12";
if ma_ager>=80 then aget5="13";
run;
Modifier les supports de variables
Une variable est définie dès le départ avec un certain support : caractère ou
numérique. Bien que cet attribut ne soit pas destiné à être modifié, si l’on souhaite le
faire, il faut créer une nouvelle variable.
62
Transformation de caractère à numérique
Supposons que la table d’entrée (repondant2) contienne une variable ma_sexe, de
support caractère et de longueur de stockage 2. On souhaite transformer cette
variable en une variable numérique de longueur de stockage 1. On écrit le
programme suivant :
data table18;
set tablesas.repondant2;
format NEW_SEXE 1.;
NEW_SEXE = input (ma_sexe,1.);
label new_sexe=NLE VAR SEXE;
run;
à étape 1
à étape 2
Étape 1 : Avant de créer la variable NEW_SEXE, on définit son support : une
variable numérique de longueur 1.
Étape 2 : Les valeurs prises par NEW_SEXE résultent de la conversion en
numérique (et de longueur 1) de la variable MA_SEXE. Pour les variables
numériques, la longueur par défaut reste de 8.
Transformation de numérique à caractère
De manière symétrique, la fonction put (varnum,format_caractère) permet de
convertir des données numériques en caractères.
data table19;
set tablesas.repondant2;
format NEW_IDENT $5.;
NEW_IDENT = put (ident,$5.);
label new_ident=NLE VAR IDENT;
run;
à étape 1
à étape 2
Étape 1 : Avant de créer la variable NEW_IDENT, on définit son support : une
variable alphanumérique de longueur 5.
Étape 2 : Les valeurs prises par NEW_IDENT résultent de la conversion en
alphanumérique (et de longueur 5) de la variable IDENT.
63
IV. Appariement de Tables SAS
Avec SAS, il est possible de joindre des Tables les unes aux autres. On peut ainsi
ajouter soit des observations, soit des variables à une Table existante, fusionner ou
empiler deux ou plusieurs Tables SAS pour n’en faire qu’une. On parle
d’appariement ou de concaténation de Tables SAS.
Lorsque l’on ajoute des variables et que les observations sont les mêmes, on parle
de fusion de Tables. A l’inverse, lorsque l’on ajoute des observations et que les
variables sont identiques, on empile les tables.
1. Fusion de Tables : MERGE – ajout de variables
Ajout de variables
L’appariement de Tables SAS se déroule dans une étape DATA.
Démarche :
On créé une nouvelle Table qui joint les deux précédentes Tables dans lesquelles
figurent les mêmes numéros d’observations (individus) mais des variables
différentes.
Variable d’identification :
Une seule variable est identique aux deux Tables, la variable d’identification des
observations (individus) qui sera utilisée pour joindre les Tables. Elle permet de
distinguer les observations les unes des autres (comme un numéro de questionnaire
dans une enquête).
Objectif :
On constitue une nouvelle Table comprenant les variables des deux précédentes
Tables en agrégeant à chaque identifiant (observation) les variables des deux
Tables. L’identifiant constitue alors la clé d’appariement.
Les instructions MERGE / BY
64
Pour joindre les Tables selon l’identifiant, il faut qu’elles soient triées selon la(es)
variable(s) d’identification des observations (PROC SORT… BY ident ;)
Puis, l’appariement se fait dans une étape DATA comprenant les instructions
MERGE et BY (BY précise la variable d’identification, ici ident).
1. Tri des Tables
proc sort data=TABLESAS.base_etudiants1 ;
by ident;
run;
proc sort data=TABLESAS.base_etudiants4 ;
by ident;
run;
2. Appariement des Tables
data base_etudiants14 ;
merge TABLESAS.base_etudiants1 TABLESAS.base_etudiants4 ;
by ident ;
run ;
3. Edition de la nouvelle Table (voir sortie de l’édition plus loin)
proc print data=base_etudiants14;
run;
Synthèse de la fusion des Tables
Fusion des Tables :
base_etudiants1
base_etudiants4
en 1 base :
base_etudiants14
Remarques :
1. Si certaines modalités de la variable identifiant se répètent dans les deux tables,
SAS ne pourra fusionner correctement les observations (mélange d’observations).
2. Si certaines variables, autres que la clé d’appariement, se répètent dans les tables
que l’on souhaite fusionner, les valeurs de la table de sortie seront celles de la
dernière table de la liste suivant l’instruction merge.
2. Empilement de Tables : MERGE – ajout d’observations
Ajout d’observations
On peut aussi joindre les observations de deux Tables identiques (mêmes variables).
On ajoute ainsi des observations d’une autre Table à la Table initiale. Cette opération
s’apparente à rajouter des questionnaires passés ultérieurement dans une enquête.
On empile alors deux tables l’une sur l’autre.
Cette procédure se déroule toujours dans une étape DATA.
65
Démarche :
On crée une nouvelle Table en joignant ensemble deux Tables ou plus. Dans ces
Tables figurent des numéros d’observations différents (individus) mais les mêmes
variables. Cela suppose une même structure pour les Tables fusionnées.
Comme précédemment, les Tables doivent au préalable avoir été triées en fonction
de la variable d’identification.
Tri des Tables
proc sort data=TABLESAS.base_etudiants1 ;
by ident;
run;
proc sort data=TABLESAS.base_etudiants3 ;
by ident;
run;
Deux méthodes
1. Avec l’instruction merge
Variable d’identification :
La variable d’identifiant demeure la variable de référence pour l’empilement. Les
observations – ident – s’ajoutent les unes aux autres.
Objectif :
Pour joindre les Tables, on constitue dans une étape DATA une nouvelle Table
comprenant les observations des Tables empilées.
Empilement des Tables avec les instructions MERGE / BY
Comme pour l’ajout de variables, l’appariement de Tables par ajout d’observations
s’effectue à partir des instructions MERGE et BY.
data base_etudiants13 ;
merge TABLESAS.base_etudiants1 TABLESAS.base_etudiants3 ;
by ident ;
run ;
2. Avec l’instruction set
Les observations de la Tables base_etudiants3 se placent sous celles de la Table
base_etudiants1 pour constituer la nouvelle Table base_etudiants13.
data base_etudiants13 ;
set TABLESAS.base_etudiants1 TABLESAS.base_etudiants3 ;
run ;
66
Remarque:
Si une variable n’existe que dans la table TABLESAS.base_etudiants3, alors elle
apparaitra dans la table finale mais sera composée de valeurs manquantes pour les
observations de la TABLES.base_etudiants3.
Edition de la nouvelle Table (voir sortie de l’édition plus loin)
proc print data=base_etudiants13;
run;
Synthèse de l’empilement des Tables
Fusion des Tables :
base_etudiants1
base_etudiants3
en 1 base :
base_etudiants13
Selon l’identifiant : ident
3. Variable origine des Tables
Création de variables d’origine de TABLES
Lorsqu’on fusionne ou empile deux Tables, il est utile de vérifier dans la nouvelle
Table si les données ont été appariées correctement en regardant de quelle Table
proviennent les observations.
Pour cela, on peut créer une variable identifiant l’origine des observations.
On ajoute dans la ligne de commande MERGE pour chaque Table l’instruction (in=a)
ou (in=b)… et on crée ensuite une variable pour chaque Table (Table1 ; Table2) qui
aura la modalité (a ; b) définie dans l’instruction MERGE.
1. Lors de l’ajout de variables
data base_etudiants14 ;
merge TABLESAS.base_etudiants1 (in=a)
TABLESAS.base_etudiants4 (in=b);
by ident;
tab1=a;
tab4=b;
run;
67
Exemple de sorties : (PROC PRINT)
Tableau 1 : Lors de l’ajout de variables
2. Lors d’ajout d’observations
data base_etudiants13 ;
merge TABLESAS.base_etudiants1 (in=a)
TABLESAS.base_etudiants3 (in=b);
by ident;
tab1=a;
tab3=b;
Lecture :
Pour chaque observation, on connait la provenance des informations :
- Tableau 1 : depuis les deux tables simultanément si tab1=1 et tab2=1 (pour les 10
observations)
- Tableau 2 : uniquement depuis la table1 si tab1=1 et tab3=0 (pour les 10 premières
observations)
68
Exemple de sorties : (PROC PRINT)
Tableau 2 : Lors de l’ajout d’observations
Remarque :
Les Tables fusionnées n’ont pas toujours exactement la même structure (variables
manquantes). Dans ce cas, après la fusion, les données manquantes sont
représentées par des points ou des espaces laissés vides, si les variables sont
respectivement numériques ou alphanumériques.
69
Téléchargement