LesezeichenAbonnierenRSS-Feed abonnieren
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Margaretha_97
Fluorite | Level 6

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!

 

1 AKZEPTIERTE LÖSUNG

Akzeptierte Lösungen
Margaretha_97
Fluorite | Level 6

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!

Lösung in ursprünglichem Beitrag anzeigen

5 ANTWORTEN 5
Kurt_Bremser
Super User

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.

Margaretha_97
Fluorite | Level 6

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!

Dave_Prinsloo
Calcite | Level 5
Was steht im Log?
FreelanceReinh
Jade | Level 19

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;

 

Margaretha_97
Fluorite | Level 6

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!