Publié le :
Data Manipulation CREATION_INTERNE

Recherche de correspondance de valeurs et récupération de noms de variables

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le script génère d'abord une table contenant des notations. Il compare ensuite une colonne cible 'rating' à trois colonnes d'agences (moodys, s_and_p, fitch). Plusieurs techniques sont présentées : des conditions IF-ELSE classiques, l'utilisation de la fonction WHICHC pour trouver l'index de la colonne correspondante, et une méthode avancée combinant WHICHC, ARRAY et VNAME pour récupérer dynamiquement le nom de la variable correspondante. Une étape finale met en garde contre le désalignement entre l'ordre des arguments de WHICHC et celui de l'ARRAY.
Analyse des données

Type : CREATION_INTERNE


Les données sont générées directement dans le code via des instructions d'affectation et OUTPUT.

1 Bloc de code
DATA STEP Data
Explication :
Création de la table 'ratings' contenant une valeur cible 'rating' et trois colonnes de comparaison ('moodys', 's_and_p', 'fitch').
Copié !
1DATA ratings;
2 LENGTH rating $4;
3 rating = 'A+';
4 moodys = 'Baa2';
5 s_and_p = 'BBB+';
6 fitch = 'A+';
7 OUTPUT;
8 rating = 'Aa3';
9 moodys = 'Aa3';
10 s_and_p = 'AAA';
11 fitch = 'AA-';
12 OUTPUT;
13 rating = 'c';
14 moodys = 'Aa3';
15 s_and_p = 'AAA';
16 fitch = 'AA-';
17 OUTPUT;
18 rating = 'D-';
19 moodys = 'Aa3';
20 s_and_p = 'D-';
21 fitch = 'D-';
22 OUTPUT;
23RUN;
2 Bloc de code
DATA STEP
Explication :
Première méthode de correspondance utilisant une structure conditionnelle IF-ELSE classique pour identifier la colonne correspondante.
Copié !
1DATA ratings_match;
2 SET ratings;
3 LENGTH rating_match $8;
4 
5 IF rating = moodys THEN rating_match = 'moodys';
6 ELSE IF rating = s_and_p THEN rating_match = 's_and_p';
7 ELSE IF rating = fitch THEN rating_match = 'fitch';
8 ELSE rating_match = 'no match';
9RUN;
3 Bloc de code
DATA STEP
Explication :
Utilisation de la fonction WHICHC pour retourner l'index (la position) de la première variable correspondante dans la liste fournie.
Copié !
1DATA ratings_match;
2 SET ratings;
3 /* WHICHC talar om variabelnumret man fr trff p, baserat p ordningen
4 man raddar upp variablerna i p samma stt som COALESCEC.
5 Finns bara trff i en variabel spelar ordningen ingen roll.
6 Prioordning (i de fall man fr trff p flera):
7 1. Moodys
8 2. S&P
9 3. Fitch */
10 variable_match_number = whichc(rating, moodys, s_and_p, fitch);
11RUN;
4 Bloc de code
DATA STEP
Explication :
Combinaison d'un ARRAY, de la fonction WHICHC et de la fonction VNAME. L'index retourné par WHICHC est utilisé pour accéder à l'élément du tableau, et VNAME récupère le nom de la variable source.
Copié !
1DATA ratings_match;
2 SET ratings;
3 LENGTH rating_match $8;
4 /* Array fr att peka p de tre variablerna med vrden,
5 mste ha samma ordning som WHICHC */
6 array rating_agency [3] moodys s_and_p fitch;
7
8 variable_match_number = whichc(rating, moodys, s_and_p, fitch);
9
10 /* Fr man trff i ngon variabel g vidare och plocka fram namnet p variabeln */
11 IF variable_match_number THEN rating_match = vname(rating_agency[variable_match_number]);
12 ELSE rating_match = 'no match';
13RUN;
5 Bloc de code
DATA STEP
Explication :
Démonstration d'un cas d'erreur logique : l'ordre des variables dans WHICHC diffère de l'ordre dans l'ARRAY, ce qui conduit à récupérer le mauvais nom de variable via VNAME.
Copié !
1/* ndrar ordningen p WHICHC och inte arrayen, blir helt tokigt.
2 r det lnga listor kan man med frdel speca ordningen i en
3 makrovariabel s man bara gr det 1 gng. */
4DATA ratings_match_error;
5 SET ratings;
6 LENGTH rating_match $8;
7 array rating_agency [3] moodys s_and_p fitch;
8
9 variable_match_number = whichc(rating, s_and_p, fitch, moodys);
10
11 IF variable_match_number THEN rating_match = vname(rating_agency[variable_match_number]);
12 ELSE rating_match = 'no match';
13RUN;
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.
Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« L'identification de l'origine d'une valeur parmi plusieurs colonnes est un défi classique, notamment dans le secteur financier où les notations (ratings) proviennent d'agences concurrentes. Si les conditions IF-ELSE sont lisibles pour de petits volumes, l'utilisation de la fonction WHICHC offre une approche beaucoup plus élégante et performante. Cette fonction retourne l'index de la première colonne correspondant à la valeur cible. Coupler cet index avec un ARRAY et la fonction VNAME permet de récupérer dynamiquement le nom de la variable gagnante (ex: "moodys" ou "fitch") sans écrire de code en dur pour chaque agence. »