
L’option NOTSORTED de l’instruction BY : A quoi cela sert-il ?
janvier 24, 2010Dans une instruction BY, l’option NOTSORTED fait parfois son apparition.
Le résultat de cette option diffère de celui avec un tri préalable.
Voici l’illustration de cette option dans un PROC TRANSPOSE.
1. Les données : SASHELP.CLASS
Le dataset SASHELP.CLASS et plus particulièrement ses variables AGE et WEIGHT servent pour l’exemple.
2. Un usage classique de l’instruction BY
De manière générale, pour utiliser une instruction BY,
il faut que les observations soient triées de la même maniÈre dans le fichier d’entrée.
Ici les données sont triées par AGE.
Comme on ne peut pas modifier les fichiers de la bibliothèque SASHELP,
le résultat après le tri est sauvegardé dans la bibliothèque temporaire WORK.
proc sort data=sashelp.class out=class;
by age;
run;
Puis la mesure de poids (WEIGHT) est transposée.
proc transpose data=class out=class;
var weight;
by age;
run;
On se retrouve donc avec une ligne par AGE.
2. L’option NOTSORTED
L’option NOTSORTED se place en fin d’instruction BY.
proc transpose data=sashelp.class out=class;
var weight;
by age notsorted;
run;
Cette fois-ci à chaque changement d’âge dans le fichier d’origine, une nouvelle ligne est ajoutée dans le fichier de sortie.
Par exemple l’âge des observations 2 et 3 du fichier d’origine se suivent : 13.
Dans le fichier final, une seule ligne sera formée à partir de ces deux fichiers. Le premier poids 84 ira dans la variable COL1 et le second 98 dans la variable COL2.
Le même principe s’applique deux autres fois: observations 4 et 5 avec âge=14, observations 6 et 7 avec âge=12.
Lectures complémentaires
Votre commentaire