Veröffentlicht am :
Datenmanipulation CREATION_INTERNE

Suchen nach Wertübereinstimmungen und Abrufen von Variablennamen

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Das Skript generiert zunächst eine Tabelle mit Ratings. Anschließend vergleicht es eine Zielspalte 'rating' mit drei Agenturspalten (moodys, s_and_p, fitch). Es werden verschiedene Techniken vorgestellt: klassische IF-ELSE-Bedingungen, die Verwendung der WHICHC-Funktion zur Ermittlung des Index der übereinstimmenden Spalte und eine fortgeschrittene Methode, die WHICHC, ARRAY und VNAME kombiniert, um den Namen der entsprechenden Variablen dynamisch abzurufen. Ein letzter Schritt warnt vor einer Nichtübereinstimmung zwischen der Reihenfolge der WHICHC-Argumente und der des ARRAYs.
Datenanalyse

Type : CREATION_INTERNE


Die Daten werden direkt im Code durch Zuweisungsanweisungen und OUTPUT generiert.

1 Codeblock
DATA STEP Data
Erklärung :
Erstellung der Tabelle 'ratings' mit einem Zielwert 'rating' und drei Vergleichsspalten ('moodys', 's_and_p', 'fitch').
Kopiert!
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 Codeblock
DATA STEP
Erklärung :
Erste Übereinstimmungsmethode unter Verwendung einer klassischen IF-ELSE-Bedingungsstruktur, um die entsprechende Spalte zu identifizieren.
Kopiert!
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 Codeblock
DATA STEP
Erklärung :
Verwendung der WHICHC-Funktion, um den Index (die Position) der ersten übereinstimmenden Variablen in der bereitgestellten Liste zurückzugeben.
Kopiert!
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 Codeblock
DATA STEP
Erklärung :
Kombination eines ARRAYs, der WHICHC-Funktion und der VNAME-Funktion. Der von WHICHC zurückgegebene Index wird verwendet, um auf das Array-Element zuzugreifen, und VNAME ruft den Namen der Quellvariablen ab.
Kopiert!
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 Codeblock
DATA STEP
Erklärung :
Demonstration eines logischen Fehlers: Die Reihenfolge der Variablen in WHICHC unterscheidet sich von der Reihenfolge im ARRAY, was dazu führt, dass der falsche Variablenname über VNAME abgerufen wird.
Kopiert!
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;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.