ist table leer??
Verfasst von linen am 28 August, 2007 - 11:07
aus einer tabelle (table1) mache ich ein
proc means
und erstelle eine neue tabelle (table2) welche ich danach zum weiterrechnen brauche.
wenn nun aber die table1 leer ist fällt es mir schwer weiter zu rechnen. (keine wert vorhanden)
wie kann ich die abfragen ob table1 leer ist und dem so ist die tabelle mit 0 abfüllen??
gruss
stefan
»
- Anmelden oder Registrieren um Kommentare zu schreiben

makro erforderlich
Hierzu braucht man zwei Dinge: eine Funktion, die die Anzahl Datensätze einer SAS-Datei abfragt und die Möglichkeit, Anweisungen in Abhängigkeit von einer Bedingung auszuführen. Zu ersterem gab es den Hinweis auf das Makro von Devenezia, siehe unten, außerdem gibt es noch weitere Möglichkeiten, siehe mein Beispiel. Zu letzterem muss man ein wenig Makrocode schreiben.
Das folgende Beispiel prüft, ob die Datei work.class leer ist (oder nicht existiert) und erzeugt sie in diesem Fall.
%* ermittle Anzahl Datensätze in work.class;
%local nobs; %let nobs=0;/* falls dataset nicht existiert */
proc sql noprint;
select nobs into :nobs from sashelp.vtable
where libname='WORK' and memname='CLASS';
run;
%*wenn die Datei work.class leer ist, so erstelle sie;
%if &nobs=0 %then %do;
data work.class;
set sashelp.class;
run;
%end;
%mend runConditional;
/* den Makro aufrufen */
options mprint;
%runConditional()
proc print data=class;
run;
Macro-Funktion
Hallo,
hierzu gibt es Macro-Funktionen, die abfragen, ob z.B. eine Tabelle Werte enthält, siehe etwa hier:
http://www.devenezia.com/downloads/sas/macros/index.php?m=anyobs
Gruß Roman Kolbe
auch in unserer Makrosammlung
Die Makros von Devenezia sind auch in unserer Makrosammlung unter com.devenezia.* abrufbar.
makro erstellt...
..super funzt..!!
danke leute..!!