Notes de cours 4

Transcription

Notes de cours 4
STT1682
AUTOMNE 2011
Cours 4 - SAS
ÉNONCÉS FIRST ET LAST
•
Une fois qu’une table de données est triée, on peut déterminer les observations
qui sont les premières et les dernières selon les critères de tri.
•
Par exemple, on a les notes des garçons et des filles et on voudrait déterminer le
meilleur gars et la meilleure fille.
•
Il faut:
•
d’abord trier par sexe pour avoir tous les gars et toutes les filles regroupés.
•
puis trier par note pour trouver la meilleure note parmi les personnes du
même sexe.
•
Utiliser une étape data pour créer la variable indiquant 1 pour le meilleur et
0 sinon
•
IMPORTANT: dans ce cas, l’étape data doit comprendre un énoncé by
identique à celui présent dans le proc sort.
Table geo
On veut le
meilleur
parmi les gars:
first.sexe
Voici le code pour créer l’indicateur:
proc sort data=geo out=geo_tri_sexe;
by sexe descending geo;
run;
data geo2;
set geo_tri_sexe;
by sexe descending geo;
if first.sexe then indicateur=1;
else indicateur=0;
run;
STT1682
AUTOMNE 2011
ÉNONCÉ OUTPUT
•
Pour obtenir une nouvelle table avec seulement les lignes qui respectent certaines
conditions
data geo_best;
set geo_tri_sexe;
by descending sexe descending geo;
if first.sexe then output;
run;
AUTRE UTILITÉ DE L’ÉNONCÉ OUTPUT
Pour créer une nouvelle table à partir de rien sans dataline:
•
•
On utilise l’étape data avec énoncé output. Il s’agit de créer chaque ligne une
après l’autre.
On crée des variables et à chaque fois qu’on veut changer de ligne, il faut écrire
l’énoncé output
Exemple: pour créer la table data1 qui contient les 3 lignes suivantes
a
1
2
3
Syntaxe:
data data1;
a=1; output;
a=2; output;
a=3; output;
run;
STT1682
AUTOMNE 2011
ÉNONCÉ DELETE
•
Pour obtenir une nouvelle table enlevant les lignes qui respectent certaines
conditions:
data geo_sans_best;
set geo_tri_sexe;
by descending sexe descending geo;
if last.sexe then delete;
run;
BOUCLE DO
•
•
•
La boucle do va permettre d’exécuter un nombre précis de fois une commande.
Il faut spécifier le nombre de fois: on commence à 1 pour aller jusqu’à n.
Toujours terminer par end pour dire que la boucle est finie.
Syntaxe
DO i in 1:n ;
instruction ;
END;
•
Pour créer une nouvelle table, plutôt que
d’écrire plusieurs fois output, on utilise
une boucle.
data data1;
do j=1 to 3;
a=i;
output;
end;
run;
STT1682
AUTOMNE 2011
JOINDRE DEUX TABLES
Joindre 2 tables signifie qu’il y a des colonnes dans une table qu’on veut ajouter à
l’autre table. Autrement dit, il s’agit d’ajouter des variables à chacune des observations.
• Pour joindre des tables à l’intérieur d’une étape data, il faut que chacune des tables
ait une variable commune (exemple: nom, id).
•
Trier les tables à joindre selon la/les variables communes (proc sort).
•
Dans l’étape data, mettre l’énoncé «merge».
•
Ajouter un by pour indiquer les variables qui sont communes dans les 2 tables.
data3;
merge data1 data2;
by observation;
run;
SUBDIVISER UNE TABLE
Exemple: mettre les gens de moins de 30 ans dans data1 et les autres dans data2
data data1 data2;
set data0;
if age lt 30 then output data1;
else output data2;
run;
SUPERPOSITION DE DEUX TABLES
Il faut écrire les deux tables dans l’énoncé set de l’étape data.
Exemple: remettre les deux tables data1 et data2 ensemble
data data1_et_2;
set data1 data2;
run;