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').
Erklärung : Erste Übereinstimmungsmethode unter Verwendung einer klassischen IF-ELSE-Bedingungsstruktur, um die entsprechende Spalte zu identifizieren.
Kopiert!
data ratings_match;
set ratings;
length rating_match $8;
if rating = moodys then rating_match = 'moodys';
else if rating = s_and_p then rating_match = 's_and_p';
else if rating = fitch then rating_match = 'fitch';
else rating_match = 'no match';
run;
1
DATA ratings_match;
2
SET ratings;
3
LENGTH rating_match $8;
4
5
IF rating = moodys THEN rating_match = 'moodys';
6
ELSEIF rating = s_and_p THEN rating_match = 's_and_p';
7
ELSEIF rating = fitch THEN rating_match = 'fitch';
8
ELSE rating_match = 'no match';
9
RUN;
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!
data ratings_match;
set ratings;
/* WHICHC talar om variabelnumret man fr trff p, baserat p ordningen
man raddar upp variablerna i p samma stt som COALESCEC.
Finns bara trff i en variabel spelar ordningen ingen roll.
Prioordning (i de fall man fr trff p flera):
1. Moodys
2. S&P
3. Fitch */
variable_match_number = whichc(rating, moodys, s_and_p, fitch);
run;
1
DATA 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.
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!
data ratings_match;
set ratings;
length rating_match $8;
/* Array fr att peka p de tre variablerna med vrden,
mste ha samma ordning som WHICHC */
array rating_agency [3] moodys s_and_p fitch;
variable_match_number = whichc(rating, moodys, s_and_p, fitch);
/* Fr man trff i ngon variabel g vidare och plocka fram namnet p variabeln */
if variable_match_number then rating_match = vname(rating_agency[variable_match_number]);
else rating_match = 'no match';
run;
1
DATA ratings_match;
2
SET ratings;
3
LENGTH rating_match $8;
4
/* Array fr att peka p de tre variablerna med vrden,
/* 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';
13
RUN;
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!
/* ndrar ordningen p WHICHC och inte arrayen, blir helt tokigt.
r det lnga listor kan man med frdel speca ordningen i en
makrovariabel s man bara gr det 1 gng. */
data ratings_match_error;
set ratings;
length rating_match $8;
array rating_agency [3] moodys s_and_p fitch;
variable_match_number = whichc(rating, s_and_p, fitch, moodys);
if variable_match_number then rating_match = vname(rating_agency[variable_match_number]);
else rating_match = 'no match';
run;
1
/* ndrar ordningen p WHICHC och inte arrayen, blir helt tokigt.
2
r det lnga listor kan man med frdel speca ordningen i en
IF variable_match_number THEN rating_match = vname(rating_agency[variable_match_number]);
12
ELSE rating_match = 'no match';
13
RUN;
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.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.