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-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

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