
Tout sur l’instruction BY
avril 14, 2009Me rendant compte que l’instruction BY pouvait poser des difficultés lorsqu’on débute avec SAS, j’ai décidé de faire le point sur cette instruction.
1. Une instruction locale
L’instruction BY peut servir dans toutes les étapes data et procédures à l’exception de PROC SQL.
2. Un ordre défini par le nom des variables :
L’instruction BY est suivie du nom des variables servant pour le tri.
Dans un premier temps, les observations sont triées selon les valeurs de la première variable citée, ici SEX. Puis, pour chacune des valeurs prises par SEX (M et F), les données sont triées par NAME.
proc sort data=sashelp.class out=class;
by sex name;
run;
3. PROC SORT : le premier usage de l’instruction BY : L’instruction BY est logiquement obligatoire dans un PROC SORT. Sinon SAS ne saurait pas dans quel ordre trier les données. Le mot DESCENDING peut-être ajouté pour préciser un ordre décroissant. Ici les données sont d’abord triées par SEX puis par nom en ordre descendant.
proc sort data=sashelp.class out=class;
by sex descending name;
run;
L’autre manière de trier les données est d’utiliser la procédure PROC SQL.
Idée : Vous aurez souvent un PROC SORT avant d’utiliser l’instruction BY dans une autre procédure ou étape data. Simplifiez-vous la vie en copiant l’insstruction au niveau du PROC SORT et en la collant au niveau de la procédure ou étape data suivante.
4. SAS vous informe si les données ne sont pas triées comme indiqué
L’instruction BY précise à SAS dans quel ordre les données doivent être lues. Si les données ne respectent pas cet ordre, SAS s’arrête et fourni un message d’erreur.
5. L’instruction BY : obligatoire ou optionnelle ?
L’instruction BY est optionelle dans une instruction SET. Utilisée pour empiler les données de deux data sets, elle permettra d’intercaler les observations des deux sources selon leur valeurs au lieu de mettre d’abord toutes les observations du premier data set cité et ensuite toutes les observations du second data set.
L’instruction BY reste pratiquement indispensable avec MERGE puisqu’elle sert à relier les observations de deux data sets par les variables du même nom. Sans elle, les observations du second data set pour les variables du même nom réécrirait sur celle du premier.
L’instruction BY est indispensable avec FIRST et LAST.
6. D’autres usages de l’instruction BY
L’instruction BY peut s’ajouter dans un PROC REPORT. Une option NOBYLINE permettra de changer le titre à chaque nouvelle combinaison de valeurs désignée par l’instruction. Néanmoins la mise à jour du titre par cette approche avec ODS RTF par exemple ne fonctionne pas.
L’instruction BY peut servir dans toutes less procédures (sauf PROC SQL) et notamment dans les procédures statistiques. Voir dans les lectures complémentaire l’usage de l’instruction BY avec PROC FREQ.
Lectures Complémentaires
- Trier les données par ordre croissant et décroissant : PROC SORT et l’instruction BY
- Empiler des data sets : L’instruction BY utilisée avec SET
- La base de la jointure entre deux data sets avec MERGE : l’instruction BY utilisée avec MERGE
- Retrouver la valeur suivante avec LAG et MERGE : un rare cas de MERGE sans instruction BY
- Mettre à jour un data set à partir d’un autre : l’instruction BY avec UPDATE
- Repérer les premiers et derniers records (FIRST/LAST) : l’instruction BY avec FIRST et/ou LAST
- Jongler avec les records grâce aux compteurs : l’instruction BY avec FIRST
- 9 points pour personnaliser ses titres : l’instruction BY utilisée en combinaison avec TITLE
- Faire pivoter un data set : un premier exemple avec PROC TRANSPOSE : l’instruction BY avec PROC TRANSPOSE
- Un tableau à une dimension : PROC FREQ et ODS OUTPUT : l’instruction BY avec PROC FREQ
SAS Online Doc
- BY-Group Processing in SAS Programs
[…] Tout sur l’instruction BY […]