Liebe SAS Communitiy,
ich bin neu in der Gruppe, da ich erst seit kurzem mit SAS 9.4 arbeite. Wegen der aktuellen Corona Situation ist mein SAS Grundlagen Kurs leider ausgefallen und ich versuche mich im Selbststudium.
Im Rahmen meines Medizinstudiums möchte ich eine statistische Auswertung mit Daten des Statistischen Bundesamtes zu einer bestimmten Erkrankung vornehmen.
Dazu muss ich aus einem Musterdatensatz (mit der Endung sas.7bdat), der mehrere hundert Variablen enthält, die Variablen herausfiltern, die ich für meine Arbeit benötige.
In der entsprechenden Fachliteratur wird die Verwendung der Prozedur SQL mit der Anweisung SELECT empfohlen.
Hierfür habe ich folgende Syntax erstellt:
libname Haase 'C:\Users\Margaretha\Desktop\FDZ\DRG\Data';
PROC SQL;
CREATE TABLE Daten_2007 AS
SELECT t1.sex,
t1.typ_alter,
t1.pat_land,
t1.icd_hd,
FROM Haase.Drg2007_3846_sf;
QUIT;
PROC print;
RUN;
Der Libname lautet Haase. Die neu erstellte Tabelle soll Daten_2007 heißen. Das Strukturfile, das ich vom Statistischen Bundesamt gestellt bekommen habe, heißt Drg2007_3846_sf mit der Dateinamenserweiterung sas.7bdat.
Nach vielen Versuchen wird mir bei dieser Syntax zwar kein Error mehr angezeigt, aber ich erhalte
kein Ergebnis und keine neue Datei.
Kann mir jemand bei diesem Problem weiterhelfen?
Vielen Dank und alles Gute!
Vielen herzlichen Dank für diese ausführliche Erklärung und die guten Tips!
Der Hinweis auf die E-Learning Kurse von SAS hört sich super an, das wäre für mich auf jeden Fall eine gute Alternative!
Das Komma hinter der Variablen icd_hd und das Weglassen von t1 hat direkt geholfen und ich habe jetzt meine gewünschte Tabelle. Ich bin überglücklich, dass ich das Problem heute noch lösen konnte und bin begeistert wie schnell ich eine Antwort auf meine Frage bekommen habe. Vielen Dank!
Da muss ein ERROR kommen, denn das Komma nach icd_hd ist eins zuviel. Nach der letzten Variablendefinition und vor dem FROM darf kein Komma sein.
Im Zweifelsfall bitte das Log vom ganzen SQL posten, mit dem </> Button.
Vielen Dank für die schnelle Antwort! Ich habe das Komma hinter der Variablen icd_hd weggelassen. Danach hat es direkt funktioniert und ich habe die gewünschte Tabelle erhalten.
Nochmals danke und einen schönen Abend!
Hallo @Margaretha_97 und herzlich willkommen in den SAS Support Communities, speziell in CoDe SAS!
Das mit dem Kurs ist ja schade. Vielleicht wäre eines der E-Learning-Angebote von SAS Institute ein guter Ersatz? Der Kurs "SAS Programming 1" in diesem Rahmen ist meines Wissens kostenlos (siehe SAS® Programming 1: Essentials). Bis Ende April bietet SAS wegen der Coronakrise noch mehr Ressourcen gratis an, z. B. sogar alle E-Books von SAS Press, aber auch E-Learning-Kurse: https://www.sas.com/de_de/training/offers/free-training.html.
Bei konkreten Fragen und Problemen können die Communities hier eine Menge Hilfe leisten (oft super schnell und 24/7).
Der vorliegende PROC-SQL-Step ist vermutlich etwas gekürzt, denn nach der letzten Variable (hier: icd_hd) dürfte kein Komma stehen und der Alias "t1" müsste entweder zusätzlich hinter "Haase.Drg2007_3846_sf" geschrieben oder, noch einfacher, ganz weggelassen werden (SELECT sex, typ_alter, ...), damit keine Fehlermeldungen auftreten. Eine wichtige Informationsquelle ist das Log, in dem ja ggf. nicht nur Fehlermeldungen, sondern auch "Erfolgsmeldungen" erscheinen, hier z. B.
NOTE: Table WORK.DATEN_2007 created, with ### [Anzahl] rows and 4 columns.
(oder vielleicht das deutsche Äquivalent dazu).
Insbesondere würde WORK.DATEN_2007 darauf hinweisen, dass das neue Dataset DATEN_2007.sas7bdat nicht in C:\Users\Margaretha\Desktop\FDZ\DRG\Data erstellt wurde (wie es mit CREATE TABLE Haase.Daten_2007 AS ... geschehen wäre), sondern in der sog. "WORK library", dem Verzeichnis für temporäre Datasets. Wo das physikalisch liegt, wird durch Abschicken des Einzeilers
%put %sysfunc(pathname(work));
ins Log geschrieben. (Statt von "work" könnte so auch der Pfad jeder anderen angelegten Library abgefragt werden, z. B. von "Haase".)
Die Bezeichnung "Strukturfile" klingt für mich etwas nach Metadaten (also Informationen über Variablen statt über Inhalte wie Patienten o. ä.), aber der Output eines PROC CONTENTS würde das wahrscheinlich schnell klären:
proc contents data=Haase.Drg2007_3846_sf;
run;
Vielen herzlichen Dank für diese ausführliche Erklärung und die guten Tips!
Der Hinweis auf die E-Learning Kurse von SAS hört sich super an, das wäre für mich auf jeden Fall eine gute Alternative!
Das Komma hinter der Variablen icd_hd und das Weglassen von t1 hat direkt geholfen und ich habe jetzt meine gewünschte Tabelle. Ich bin überglücklich, dass ich das Problem heute noch lösen konnte und bin begeistert wie schnell ich eine Antwort auf meine Frage bekommen habe. Vielen Dank!
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!