Vous êtes sur la page 1sur 31

SAS Approfondissement - Programmation

Master

« Réseaux sociaux et numériques »

- Cours de Benoit CART : N°1 -

SAS Approfondissement Programmation

Sommaire

I.

Débuter la programmation SAS

II.

Créer des tables SAS

III.

Exécuter un programme SAS

IV.

Modifier une table SAS

V.

Combiner des tables SAS

VI.

Faciliter la gestion des tables SAS

I- Débuter la programmation SAS

1. L’environnement de travail

  • 2. Les bibliothèques

  • 3. Les deux types de travaux SAS

  • 4. Les programmes DATA

I-0

I- Débuter la programmation SAS :

l’environnement de travail

I- Débuter la programmation SAS : l’environnement de travail I-1

I-1

I- Débuter la programmation SAS :

les bibliothèques

La commande LIBNAME LIBNAME moi ‘c:\Mes documents’ ; Le bouton « Nouvelle bibliothèque »

I- Débuter la programmation SAS : les bibliothèques • La commande LIBNAME LIBNAME moi ‘c: \

I-2

I- Débuter la programmation SAS :

les deux types de travaux

Les procédures mot-clé PROC :

Permet le traitement statistique et

économétrique des données sans modification de celles-ci (ex PROC REG :

régression par la méthode des moindres carrés) Les programmes mot-clé DATA :

Permet la modification et l’adaptation des

données aux traitements à opérer

I-3

I- Débuter la programmation SAS :

les programmes DATA : généralités

Un langage interprété : construire le programme dans l’éditeur puis l’exécuter

Une boucle implicite sur les enregistrements La première ligne DATA

La dernière ligne RUN ; lancement du programme

Exemple de programme :

DATA Test ; INPUT X1 X2 $ ; CARDS ;

1989 Bernard 1985 Abélien

; RUN ;

I-4.1

DATA Test ; IMPUT /* erreur d’écriture */ X1 X2 $ ; * erreur d’écriture ;

I- Débuter la programmation SAS :

explication d’un programme

DATA suivi du nom de la table à créer (pas de bibliothèque dont table créée dans

work)

INPUT Détermination des variables de la table

Liste des données (séparateur implicite :

l’espace)

RUN Exécution du programme

I-4.2

II- Créer des tables SAS

1. Saisie directe des données

commande CARDS

2. Importation d’un fichier de données

externes commande INFILE

3. Utilisation des INFORMAT

II-0

II- Créer des tables SAS :

saisie des données : CARDS

Exemple : DATA moi.test ; INPUT AGE TAILLE PRENOM $ ; CARDS ;

II- Créer des tables SAS : saisie des données : CARDS Exemple : DATA moi.test ;

; RUN ;

II-1.1

II- Créer des tables SAS :

fonctionnement par défaut de la

commande CARDS

L’espace (ou les espaces) est le séparateur des

modalités par défaut.

La fin de ligne est le séparateur des enregistrements par défaut.

Exemples :

 

(option MISSOVER)

DATA Test ; INPUT x1 x2 x3 ; CARDS ;

DATA Test ; INPUT x1 x2 x3 ; CARDS ;

DATA Test ; INFILE CARDS MISSOVER; INPUT x1 x2 x3 ;

1

2

3

4

5

1

2

CARDS ;

6 7 8 9 10

3

4

1

2

11 12 13 14 15

 

5 6

II-1.2

3

4

; RUN ;

; RUN ;

5 6 ; RUN ;

II- Créer des tables SAS :

gérer les valeurs manquantes

Signaler les valeurs manquantes dans les

données :

soit par un . (option par défaut)

soit par un caractère (missing x)

MISSING x ; DATA test ;

CARDS ; 1 2 4

INFILE CARDS MISSOVER ;

5

x

7

8

INPUT X1 X2 X3 ;

x

9

. ; RUN ;

• soit par DLM=‘ ‘ DSD (signifie une valeur manquante quand deux séparateurs de modalités se

suivent, l’espace dans le cas présent)

II-1.3

Exercice d’application n°II-1

Créer la table Exo1 suivante par saisie dans

l’éditeur SAS (les valeurs manquantes de la variables Age seront notées Z dans le fichier) :

Prénom

Taille

Age

Groupe

Agnès

165

15

A

Brigitte

155

14

B

Corinne

15

A

Danièle

170

Eva

170

15

A

Ex : II-1

Solution de l’exercice n°II-1

MISSING Z ; DATA Exo1 ; INFILE CARDS MISSOVER ; INPUT PRENOM $ TAILLE AGE GROUPE $; CARDS ;

Agnès

165

15

A

Brigitte

155

14

B

Corinne

.

15

A

Danièle

170

Z

Eva ; RUN ;

170

15

A

Ex : II-1

II- Créer des tables SAS :

importation de fichiers externes

DATA test ; INFILE ‘Z:\Mes documents\test21.txt’ ; INPUT X1 X2 X3 X4 X5 $ ; RUN ;

Attention, chemin complet pour situer le

fichier à importer !

II-2.1

II- Créer des tables SAS :

importer une partie du fichier

DATA test ; INFILE ‘Z:\Mes documents\test22.txt’ OBS=50 FIRSTOBS=20 ; INPUT X1 X2 X3 X4 X5 $ ;

RUN ;

31 observations importées du 20 ème enregistrement au 50 ème !

FIRSTOBS : première ligne à lire

OBS : dernière ligne à lire

II-2.2

II- Créer des tables SAS :

options de la commande INFILE

  • 1. Les enregistrements sont plus longs que

256 caractères (blancs compris).

Préciser LRECL=500 (longueur de l’enregistrement)

2. Le séparateur de modalités n’est pas un

espace mais :

Une tabulation : option EXPANDTABS Une virgule : option DSD Un caractère quelconque : option DLM=‘|’

II-2.3

II- Créer des tables SAS :

Importer un fichier en précisant

l’emplacement des variables

Quand ?

(positionnement absolu)

- Pas de séparateur de modalités - Les modalités ne sont pas dans l’ordre souhaité

Comment ?

Préciser la position des variables au moyen de la

commande INPUT : Exemple : INPUT X1 4-8

(la variable X1 occupe 5 caractères, du 4 ème au 8 ème caractère dans le fichier externe)

Attention si la dernière modalité de la ligne a une longueur variable, utilisez l’option TRUNCOVER

II-2.4

II- Créer des tables SAS :

importer un fichier en précisant

l’emplacement des variables

(positionnement relatif)

INPUT X1 3-5 +2 X2 ;

La variable X2 commence à la 7 ème colonne

  • 2. INPUT X1 3-5 +2 X2 @2 X3 ;

Permet de revenir en deuxième colonne pour lire la variable X3, mais attention au séparateur entre X3 et X1.

  • 3. INPUT X1 3-5 @’prénom :’ X2 ;

La variable X2 saisie dans ce qui suit ‘prénom :’

II-2.5

II- Créer des tables SAS :

options de la commande INPUT

(cas particuliers)

Caractère & : lire deux séparateurs de modalités avant d’enregistrer la modalité suivante

Caractères @@ : rester sur la même ligne pour lire l’enregistrement suivant (cas de plusieurs

enregistrements sur la même ligne)

Caractère / : passer à la ligne suivante pour lire la modalité suivante (cas d’un enregistrement sur plusieurs

lignes)

Caractères #2 : lire la modalité suivante sur la ligne spécifiée (ici en deuxième ligne)

II-2.6

Exercice d’application n°II-2

Créer la table Exo2 suivante par importation

du fichier texte Exo2.txt

Les enregistrements seront remis dans l’ordre PRENOM

TAILLE AGE GROUPE et le premier enregistrement

sera omis

Ex : II-2

Solution de l’exercice n°II-2

DATA EXO2 ; INFILE ‘Z:\Mes documents\Exo2.txt’ TRUNCOVER FIRSTOBS=2 ;

INPUT PRENOM $ 7-14 TAILLE 4-5 AGE 1- 2 GROUPE $ 3 ;

RUN ;

Ex : II-2

II- Créer des tables SAS :

les INFORMAT alphanumériques :

format des valeurs entrantes

Par défaut une variable alphanumérique comprend 8 caractères (Var $) Pour exactement 22 caractères : Var

$char22. (un informat alphanumérique commence par $ et termine par .)

$22. éliminera les espaces éventuels en

début de modalité (à la différence de $char22.)

Remarque : Var $ 1-22 et Var $char22. sont strictement identiques !

II-3.1

II- Créer des tables SAS :

les INFORMAT numériques :

généralités

• Dans la plupart des cas, inutile parce qu’une

variable numérique ne se limite pas à 8 caractères

• Utile si le séparateur de modalité est l’espace et

que les nombres sont de la forme 2 565 234

(séparateur de milliers)

Utile si pas de séparateur de modalité mais les nombres ont toujours la même longueur :

1000abc

0043def

Utile si le séparateur décimal est une virgule (un . par défaut dans SAS)

II-3.2

II- Créer des tables SAS :

les INFORMAT numériques

les plus courants

:NUMw.d (w : nombre de caractères à lire dans le fichier brut d : nombre de décimaux)

896,48

:NUMX.

896.48

1,6%

:PERCENT.

0,016

1,6 %

:PERCENT5.

0,016

1,62 %

:PERCENT5.3

0,016

Deux façons d’introduire des Informat :

INPUT X1 :NUMX. X2 :NUMX. ; ou INFORMAT X1 X2 NUMX. ; INPUT X1 X2 ;

II-3.3

II- Créer des tables SAS :

les INFORMAT de variables date/heure

SAS stocke une date sous la forme d’une variable

numérique dont le 0 correspond au 1 er janvier 1960. Il faut donc souvent transformer les dates en ce sens.

  • 1. Si 3 variables constituent la date :

INPUT JJ MM AA ; DATE=MDY(MM,JJ,AA) ; 2. La date est dans un format compréhensible

INPUT date :ddmmyy. ; (ex : 01/12/1960 1 er décembre 60) INPUT date :mmddyy. ; (ex : 01/12/1960 12 janvier 60)

Attention une date de la forme 01 10 07 ne peut être reconnue par SAS qu’au moyen d’1 informat précisant la longueur :ddmmyy8.

II-3.4

II- Créer des tables SAS :

les INFORMAT de variables date/heure

SAS stocke un temps sous la forme d’une variable

numérique dont le 0 correspond à minuit (l’unité

étant la seconde. 1960.

Deux informats pour le temps :

  • 1. TIME pour un temps exprimé en hh:mm:ss

  • 2. DATETIME pour un temps exprimé en jjMMMaa:hh:mm:ss

(le 0 correspondant au 1 er janvier 1960 0h 0m 0s)

II-3.5

II- Créer des tables SAS :

créer ses propres INFORMAT

Imaginons un fichier de données où apparaissent les modalités suivantes :

‘OUI’ ‘Oui’ ‘oui’ ‘NON’ ‘Non’ ‘non’ ‘NE SAIT PAS’ ‘Ne Sait Pas’ ‘ne sait pas’ On peut simplifier l’information en créant un informat :

PROC FORMAT ; INVALUE enq (ou $enq) ‘OUI’,‘Oui’,‘oui’ = 1 (ou ‘1’ ou ‘O’) ‘NON’,’Non’,’non’ = 2 (ou ‘2’ ou ‘N’) ‘NE SAIT PAS’, ‘Ne Sait Pas’,’ne sait pas’ = 0 ; (ou ‘0’ ou ‘NSP’) RUN ;

II-3.6

Exercice d’application n°II-3

Créer la table Exo3 suivante par importation

du fichier texte Sgtpepper.txt

Avec création des variables suivantes :

Ordre Titre Compo1 Compo2 Duree Face

(Face prend les modalités 1 pour ‘A’ ou 2 pour ‘B’ par création d’un INFORMAT numérique appelé

nface)

Ex : II-3

Solution de l’exercice n°II-3

PROC FORMAT ; INVALUE nface ‘A’ = 1 ‘B’ = 2 ; DATA Exo3 ; INFILE ‘Z:\Mes documents\Sgtpepper.txt’ TRUNCOVER ;

INPUT ORDRE TITRE $50. / COMPO1 $ & COMPO2 $9. DUREE :TIME. FACE :nface. ;

RUN ;

Ex : II-3

SAS Approfondissement Programmation

Bibliographie

Sébastien Ringuedé :

« SAS : Introduction au décisionnel : méthode et

maîtrise du langage », Pearson Education, 2008 Hélène Kontchou Kouomegni, Olivier Decourt :

« SAS : Maîtriser SAS Base et SAS Macro », Dunod,

2007

SAS Institute :

« SAS Certification Prep Guide », SAS

Documentation, 2009