Das Makro `AHGsetallvarnil` ist dafür konzipiert, innerhalb eines DATA STEP aufgerufen zu werden. Es identifiziert alle im aktuellen Datenschritt verfügbaren Zeichen- und numerischen Variablen mithilfe der impliziten Arrays `_character_` und `_numeric_`. Für jede Variable prüft es, ob ihr Name mit der über den Parameter `except` bereitgestellten Ausnahmeliste übereinstimmt. Wenn der Variablenname NICHT in der Ausnahmeliste enthalten ist (die Überprüfung erfolgt durch das Makro `%AHGequaltext`), wird die Variable auf fehlend gesetzt (leere Zeichenkette für Zeichen, Punkt für numerische Variablen). Es ist wichtig, einen potenziellen Fehler im bereitgestellten Code zu beachten: Bei der Verarbeitung numerischer Variablen verwendet die Bedingung `if not %AHGequaltext(vname(ahuigeallchar),&except)` `vname(ahuigeallchar)` anstelle von `vname(ahuigeallnum)`. Dies bedeutet, dass die Ausschließung numerischer Variablen auf dem Namen von Zeichenvariablen basiert, was die korrekte Ausschließung der gewünschten numerischen Variablen verhindern könnte.
Datenanalyse
Type : CREATION_INTERNE
Das Makro operiert auf den vorhandenen Variablen im Datenschritt, in dem es aufgerufen wird, und initialisiert sie je nach Typ auf fehlende Werte. Es greift nicht direkt auf externe Datenquellen oder SASHELP zu.
1 Codeblock
MACRO DEFINITION
Erklärung : Dieser Block definiert das Makro `AHGsetallvarnil` mit einem optionalen Parameter `except`. Es deklariert zwei implizite Arrays: `ahuigeallchar` für alle Zeichenvariablen und `ahuigeallnum` für alle numerischen Variablen. Zwei `DO OVER`-Schleifen werden verwendet, um über diese Arrays zu iterieren. Für Zeichenvariablen wird die Variable auf eine leere Zeichenkette `''` gesetzt, wenn der Variablenname (ermittelt durch `vname`) nicht in der `except`-Liste enthalten ist (überprüft durch `%AHGequaltext`). Für numerische Variablen wird die numerische Variable auf den fehlenden Wert `.` gesetzt, wenn der Name einer Zeichenvariablen (potenzieller Fehler hier, da `vname(ahuigeallchar)` anstelle von `vname(ahuigeallnum)` verwendet wird) nicht in der `except`-Liste enthalten ist.
Kopiert!
%macro AHGsetallvarnil(except=);
do;
array ahuigeallchar _character_;
array ahuigeallnum _numeric_ ;
do over ahuigeallchar ;
if not %AHGequaltext(vname(ahuigeallchar),&except) then ahuigeallchar='';
end;
do over ahuigeallnum ;
if not %AHGequaltext(vname(ahuigeallchar),&except) then ahuigeallnum=.;
end;
do;
%mend;
1
%macro AHGsetallvarnil(except=);
2
DO;
3
array ahuigeallchar _character_;
4
array ahuigeallnum _numeric_ ;
5
DO over ahuigeallchar ;
6
IF not %AHGequaltext(vname(ahuigeallchar),&except) THEN ahuigeallchar='';
7
END;
8
DO over ahuigeallnum ;
9
IF not %AHGequaltext(vname(ahuigeallchar),&except) THEN ahuigeallnum=.;
10
END;
11
DO;
12
%mend;
13
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.