Si vous avez de nombreuses conditions, placez les valeurs les plus fréquentes en haut de la liste des clauses WHEN. Même dans un groupe SELECT, cela permet d'accélérer statistiquement le branchement logique et d'optimiser encore davantage vos traitements.
Les exemples utilisent des données de la librairie SASHELP (sashelp.shoes).
1 Bloc de code
DATA STEP
Explication : Cet exemple crée un nouveau jeu de données 'shoes' à partir de `sashelp.shoes`. Il filtre les données pour inclure uniquement les régions 'Canada', 'Pacific' et 'Asia'. Ensuite, il utilise l'instruction SELECT WHEN pour appliquer des remises différentes aux ventes en fonction de la région : 10% pour le Canada, 9% pour le Pacifique et 7% pour l'Asie. Enfin, `PROC PRINT` affiche le contenu du jeu de données modifié.
Copié !
data shoes;
set sashelp.shoes(where=(Region='Canada' or Region='Pacific' or Region='Asia'));
keep Region Sales Product;
select(Region);
when('Canada') sales = sales * .10;
when('Pacific') sales = sales * .09;
when('Asia') sales = sales * .07;
end;
run;
proc print data=shoes; run;
1
DATA shoes;
2
SET sashelp.shoes(where=(Region='Canada' or Region='Pacific' or Region='Asia'));
3
keep Region Sales Product;
4
select(Region);
5
when('Canada') sales = sales * .10;
6
when('Pacific') sales = sales * .09;
7
when('Asia') sales = sales * .07;
8
END;
9
RUN;
10
PROC PRINTDATA=shoes; RUN;
L'Astuce Pro
Pour optimiser le temps CPU de votre etape DATA, listez les valeurs les plus frequentes en premier dans vos instructions when, et ajoutez systematiquement une clause otherwise afin d eviter que le programme ne s arrete brutalement si une valeur de Region non prevue par votre filtre where (comme une majuscule differente ou une donnee corrompue) venait a etre lue.
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.