Vous êtes sur la page 1sur 31

SAS Approfondissement Programmation

Master
Rseaux sociaux
et numriques
- Cours de Benoit CART : N1 -

SAS Approfondissement Programmation

Sommaire
I.
II.
III.
IV.
V.
VI.

Dbuter la programmation SAS


Crer des tables SAS
Excuter un programme SAS
Modifier une table SAS
Combiner des tables SAS
Faciliter la gestion des tables SAS

I- Dbuter la programmation SAS


1. Lenvironnement de travail
2. Les bibliothques
3. Les deux types de travaux SAS

4. Les programmes DATA


I-0

I- Dbuter la programmation SAS :

lenvironnement de travail

I-1

I- Dbuter la programmation SAS :

les bibliothques
La commande LIBNAME
LIBNAME moi c:\Mes documents ;
Le bouton Nouvelle bibliothque

I-2

I- Dbuter la programmation SAS :

les deux types de travaux


Les procdures mot-cl PROC :
Permet le traitement statistique et
conomtrique des donnes sans
modification de celles-ci (ex PROC REG :
rgression par la mthode des moindres
carrs)
Les programmes mot-cl DATA :
Permet la modification et ladaptation des
donnes aux traitements oprer
I-3

I- Dbuter la programmation SAS :

les programmes DATA : gnralits


Un langage interprt : construire le programme
dans lditeur puis lexcuter
Une boucle implicite sur les enregistrements
La premire ligne DATA
La dernire ligne RUN ; lancement du
programme
Exemple de programme :
DATA Test ;
INPUT X1 X2 $ ;
CARDS ;
1989 Bernard
1985 Ablien
; RUN ;

DATA Test ;
IMPUT /* erreur
dcriture */ X1 X2 $ ;
* erreur dcriture ;

I-4.1

I- Dbuter la programmation SAS :

explication dun programme


DATA suivi du nom de la table crer
(pas de bibliothque dont table cre dans
work)
INPUT Dtermination des variables de la
table
Liste des donnes (sparateur implicite :
lespace)
RUN Excution du programme
I-4.2

II- Crer des tables SAS


1. Saisie directe des donnes
commande CARDS
2. Importation dun fichier de donnes
externes
commande INFILE
3. Utilisation des INFORMAT
II-0

II- Crer des tables SAS :

saisie des donnes : CARDS


Exemple : DATA moi.test ;
INPUT AGE TAILLE PRENOM $ ;
CARDS ;
15 165 Ablien
13 154 Bernard
17 178 Claude
;
RUN ;
II-1.1

II- Crer des tables SAS :

fonctionnement par dfaut de la


commande CARDS
Lespace (ou les espaces) est le sparateur des
modalits par dfaut.
La fin de ligne est le sparateur des enregistrements
par dfaut.
Exemples :
DATA Test ;
INPUT x1 x2 x3 ;
CARDS ;
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
; RUN ;

DATA Test ;
INPUT x1 x2 x3 ;
CARDS ;
1 2
3 4
5 6
; RUN ;
II-1.2

(option MISSOVER)
DATA Test ;
INFILE CARDS MISSOVER;
INPUT x1 x2 x3 ;
CARDS ;
1 2
3 4
5 6
; RUN ;

II- Crer des tables SAS :

grer les valeurs manquantes


Signaler les valeurs manquantes dans les
donnes :
soit par un . (option par dfaut)
soit par un caractre (missing x)
MISSING x ;
DATA test ;
INFILE CARDS MISSOVER ;
INPUT X1 X2 X3 ;

CARDS ;
1 2
4
5 x 7 8
x . 9
; RUN ;

soit par DLM= DSD (signifie une valeur


manquante quand deux sparateurs de modalits se
suivent, lespace dans le cas prsent)
II-1.3

Exercice dapplication nII-1


Crer la table Exo1 suivante par saisie dans
lditeur SAS (les valeurs manquantes de la
variables Age seront notes Z dans le fichier) :
Prnom
Agns
Brigitte
Corinne
Danile
Eva

Taille
165
155

170
170
Ex : II-1

Age
15
14
15

Groupe
A
B
A

15

Solution de lexercice nII-1


MISSING Z ;
DATA Exo1 ;
INFILE CARDS MISSOVER ;
INPUT PRENOM $ TAILLE AGE GROUPE $;
CARDS ;
Agns
Brigitte
Corinne
Danile
Eva
; RUN ;

165
155
.
170
170

15
14
15
Z
15

Ex : II-1

A
B
A

II- Crer 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- Crer 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 importes du 20me
enregistrement au 50me !

FIRSTOBS : premire ligne lire


OBS : dernire ligne lire
II-2.2

II- Crer des tables SAS :

options de la commande INFILE


1. Les enregistrements sont plus longs que
256 caractres (blancs compris).
Prciser LRECL=500 (longueur de lenregistrement)
2. Le sparateur de modalits nest pas un
espace mais :
Une tabulation : option EXPANDTABS
Une virgule : option DSD
Un caractre quelconque : option DLM=|
II-2.3

II- Crer des tables SAS :

Importer un fichier en prcisant


lemplacement des variables
(positionnement absolu)
Quand ?
- Pas de sparateur de modalits
- Les modalits ne sont pas dans lordre souhait

Comment ?
Prciser la position des variables au moyen de la
commande INPUT : Exemple : INPUT X1 4-8
(la variable X1 occupe 5 caractres, du 4me au 8me caractre dans le
fichier externe)

Attention si la dernire modalit de la ligne a une longueur


variable, utilisez loption TRUNCOVER
II-2.4

II- Crer des tables SAS :

importer un fichier en prcisant


lemplacement des variables
(positionnement relatif)

INPUT X1 3-5 +2 X2 ;
La variable X2 commence la 7me colonne

2. INPUT X1 3-5 +2 X2 @2 X3 ;
Permet de revenir en deuxime colonne pour lire
la variable X3, mais attention au sparateur entre
X3 et X1.

3. INPUT X1 3-5 @prnom : X2 ;


La variable X2 saisie dans ce qui suit prnom :
II-2.5

II- Crer des tables SAS :

options de la commande INPUT


(cas particuliers)
Caractre & : lire deux sparateurs de modalits
avant denregistrer la modalit suivante

Caractres @@ : rester sur la mme ligne pour


lire lenregistrement suivant (cas de plusieurs
enregistrements sur la mme ligne)

Caractre / : passer la ligne suivante pour lire la


modalit suivante (cas dun enregistrement sur plusieurs
lignes)

Caractres #2 : lire la modalit suivante sur la ligne


spcifie (ici en deuxime ligne)
II-2.6

Exercice dapplication nII-2

Crer la table Exo2 suivante par importation


du fichier texte Exo2.txt
Les enregistrements seront remis dans lordre PRENOM
TAILLE AGE GROUPE et le premier enregistrement
sera omis

Ex : II-2

Solution de lexercice nII-2

DATA EXO2 ;
INFILE Z:\Mes documents\Exo2.txt
TRUNCOVER FIRSTOBS=2 ;
INPUT PRENOM $ 7-14 TAILLE 4-5 AGE 12 GROUPE $ 3 ;
RUN ;
Ex : II-2

II- Crer des tables SAS :

les INFORMAT alphanumriques :


format des valeurs entrantes
Par dfaut une variable alphanumrique
comprend 8 caractres (Var $)
Pour exactement 22 caractres : Var
$char22. (un informat alphanumrique commence par
$ et termine par .)

$22. liminera les espaces ventuels en


dbut de modalit ( la diffrence de $char22.)
Remarque : Var $ 1-22 et Var $char22. sont strictement
identiques !
II-3.1

II- Crer des tables SAS :

les INFORMAT numriques :


gnralits
Dans la plupart des cas, inutile parce quune
variable numrique ne se limite pas 8
caractres
Utile si le sparateur de modalit est lespace et
que les nombres sont de la forme 2 565 234
(sparateur de milliers)
Utile si pas de sparateur de modalit mais les
nombres ont toujours la mme longueur :
1000abc 0043def
Utile si le sparateur dcimal est une virgule
(un . par dfaut dans SAS)
II-3.2

II- Crer des tables SAS :

les INFORMAT numriques


les plus courants
:NUMw.d (w : nombre de caractres lire dans le
fichier brut d : nombre de dcimaux)

896,48
:NUMX.
896.48
1,6%
:PERCENT.
0,016
1,6 %
:PERCENT5.
0,016
1,62 %
:PERCENT5.3
0,016
Deux faons dintroduire des Informat :
INPUT X1 :NUMX. X2 :NUMX. ; ou
INFORMAT X1 X2 NUMX. ; INPUT X1 X2 ;
II-3.3

II- Crer des tables SAS :

les INFORMAT de variables date/heure


SAS stocke une date sous la forme dune variable
numrique dont le 0 correspond au 1er 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 comprhensible
INPUT date :ddmmyy. ; (ex : 01/12/1960 1er dcembre 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
quau moyen d1 informat prcisant la longueur :ddmmyy8.
II-3.4

II- Crer des tables SAS :

les INFORMAT de variables date/heure


SAS stocke un temps sous la forme dune variable
numrique dont le 0 correspond minuit (lunit
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 1er janvier 1960 0h 0m 0s)

II-3.5

II- Crer des tables SAS :

crer ses propres INFORMAT


Imaginons un fichier de donnes o apparaissent les
modalits suivantes :
OUI Oui oui NON Non non NE SAIT PAS Ne Sait
Pas ne sait pas
On peut simplifier linformation en crant 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 dapplication nII-3


Crer la table Exo3 suivante par importation
du fichier texte Sgtpepper.txt
Avec cration des variables suivantes :
Ordre Titre Compo1 Compo2 Duree Face
(Face prend les modalits 1 pour A ou 2 pour B
par cration dun INFORMAT numrique appel
nface)

Ex : II-3

Solution de lexercice nII-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
Sbastien Ringued :
SAS : Introduction au dcisionnel : mthode et
matrise du langage , Pearson Education, 2008
Hlne Kontchou Kouomegni, Olivier Decourt :
SAS : Matriser SAS Base et SAS Macro , Dunod,
2007
SAS Institute :
SAS Certification Prep Guide , SAS
Documentation, 2009

Vous aimerez peut-être aussi