LesezeichenAbonnierenRSS-Feed abonnieren
LainieH
Community Manager

Hallo Redscope-User,

hier der zweite Tipp unserer unregelmäßigen Tipp-Reihe.

PROBLEM:
Manchmal legt man in einem Dataset gewollt leere Variablen an, belegt sie aber nicht direkt mit initialen Werten, z.B. um ein Dataset-Template zu erhalten, an das man Daten per Append hängen kann. Im Log erhält man dann eine "uninitialized"-Meldung. Das erschwert das Finden von ungewollten "uninitialized"-Meldungen, die häufig auf Tippfehler in Variablennamen hinweisen können.

Mittels einer array-Bildung der betreffenden Variablen kann man diese Meldung unterdrücken.

Mit den folgenden vier Zeilen Code werden alle Variablen jeden Typs in einem neuen Dataset leer initialisiert, so dass keine "uninitialized"-Meldung mehr erscheint. Dem Dataset werden dafür temporär(!) zwei zusätzliche Variablen _VARDUMMYN/C zugefügt, numerische und alphanumerisch, um jedem Array mindestens ein Element zuordnen zu können. Dies ist dann von Vorteil, wenn man die vier Zeilen in ein Makro packt und in unterschiedlich zusammengesetzten Datasets verwendet, die nicht zwingend beide Variablentypen beinhalten.

Natürlich könnte man, sofern man nur einen Variablentyp verwendet, hier den Code auch auf die eine entsprechende array-Zeile kürzen.

Natürlich könnte man, sofern man nur einen Variablentyp verwendet, hier den Code auch auf die eine entsprechende array-Zeile kürzen.

retain _VARDUMMYN . _VARDUMMYC ' '; %* temp-Variablen erzeugen... ;
drop _VARDUMMYN _VARDUMMYC;         %* ... aber auch wieder löschen;
array CHARACTERVARS _CHARACTER_;    %* alphanumerisches Array;
array NUMERICVARS _NUMERIC_;        %* numerisches Array;

BEISPIEL mit Meldungen:

1    data dummy;
2      length a 5 b c $10;
3      stop;
4    run;
NOTE: Variable a is uninitialized.
NOTE: Variable b is uninitialized.
NOTE: Variable c is uninitialized.
NOTE: The data set WORK.DUMMY has 0 observations and 3 variables.

BEISPIEL ohne Meldung:

1    data dummy;
2      length a 5 b c $10;
3      retain _VARDUMMYN . _VARDUMMYC ' '4      drop _VARDUMMYN _VARDUMMYC;
5      array CHARACTERVARS _CHARACTER_;
6      array NUMERICVARS _NUMERIC_;
7      stop;
8    run;
NOTE: The data set WORK.DUMMY has 0 observations and 3 variables.

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

Diskussionsstatistiken
  • 0 Antworten
  • 1882 Aufrufe
  • 0 Kudos
  • 1 in Unterhaltung