
Qui a la priorité : RETAIN ou SET ?
mars 30, 2010L’instruction RETAIN permet d’assigner une valeur à une variable. La valeur est reconduite à l’observation suivante à moins d’être changée par une autre instruction au cours de l’étape data.
Le point à retenir dans cet article est que si la variable existe déjà, RETAIN ne va pas pouvoir réécrire la valeur.
Afin de représenter cette logique dans son programme, il peut-être conseillé d’écrire l’instruction RETAIN avant une instruction qui lie de nouvelles données ; SET par exemple.
1. Voir la logique
La variable qui existe dans le fichier d’origine : dans cet exemple, on voit que la variable AGE qui existe dans le fichier d’origine SASHELP.CLASS n’est pas changée par l’instruction RETAIN.
La variable qui n’existe pas avant : par contre la variable AGE2 qui n’existe pas dans le fichier d’origine prend bien la valeur donnée dans l’instruction RETAIN.
data class;
set sashelp.class;
retain age 0 age2 0;
run;
proc print data=class noobs;
run;
2. Etre logique
Afin de respecter cette logique, l’instruction RETAIN est à placer avant l’instruction SET.
data class;
retain age 0 age2 0;
set sashelp.class;
run;
proc print data=class noobs;
run;
Lectures complémentaires
- Deux suggestions pour grouper les valeurs d’une variable
- Jouer avec les records grâce aux compteurs
- Repérer les 1ers/derniers records (FIRST/LAST)
- Changer la séquence d’affichage des variables
SAS Online Doc
- RETAIN Statement
[…] Qui a la priorité : RETAIN ou SET ? (article protégé : devenez correspondant ou écrivez un article pour obtenir le mot de passe) […]