SAS Data Step : Divisez la taille de votre code par deux en remplaçant IF-THEN par IFN

Ce code est également disponible en : Deutsch English Español
Niveau de difficulté
Débutant
Publié le :
Stéphanie

Le Conseil de l'Expert

Stéphanie
Spécialiste Machine Learning et IA.

Attention au piège de performance et de stabilité : contrairement à l'instruction IF-THEN qui n'exécute que la branche valide, la fonction IFN évalue systématiquement les deux arguments (valeur si vrai ET valeur si faux) avant de retourner le résultat ; cela peut provoquer des erreurs de calcul (ex: division par zéro ou log négatif) dans la partie non retenue, même si la condition semblait l'écarter.

Ce script illustre deux méthodes pour créer une variable 'price' conditionnelle basée sur l'âge à partir de la table sashelp.class. La première méthode utilise une structure de contrôle standard IF-THEN/ELSE, tandis que la seconde utilise la fonction IFN pour une syntaxe plus concise.
Analyse des données

Type : SASHELP


Les données proviennent de la table standard SASHELP.CLASS.

1 Bloc de code
DATA STEP Data
Explication :
Création de la table 'test1' en utilisant une structure conditionnelle classique IF-THEN/ELSE pour définir la variable 'price'.
Copié !
1DATA test1 ;
2 SET sashelp.class ;
3 * set entry price based on age ;
4 IF age>=13 THEN
5 price=12.50 ;
6 ELSE
7 price=8 ;
8 RUN ;
2 Bloc de code
DATA STEP Data
Explication :
Création de la table 'test2' en utilisant la fonction IFN pour définir la variable 'price' de manière concise (si age >= 13, alors 12.50, sinon 8).
Copié !
1DATA test2 ;
2 SET sashelp.class ;
3 * set entry price based on age ;
4 price=ifn(age>=13,12.50,8) ;
5 RUN ;
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.