Wieviele Variablen kann Proc Export exportieren?

Liebe Forengemeinde,

kann mir jemand sagen, wieviele Variablen SAS mit PROC EXPORT exportieren kann? In meinen Fall habe ich eine Datei mit ca. 3300 Variablen und 60 Datensätzen, es können einzelne Missings auftreten und sie enthält größtenteils numerische Variablen. Diese möchte ich nun exportieren, entweder in eine CSV oder TXT-Datei.
Nun passiert aber folgendes:
SAS gibt mir nur 2110 Variablennamen aus, aber deutlich mehr Dateneinträge (welche auch komplett sind). Jedoch kann ich mit dieser Datei nicht weiter arbeiten, weil ich nicht weiss welcher Eintrag der "namenlosen" Variablen was ist :-/

Weiss hier jemand Rat, wie ich mehr als die 2110 Variablennamen exportieren kann oder gibt es hier eine fest vorgelegte Länge (meine Namen sind teils etwas länger)?

Bevor ich dieses Thema bearbeitet habe, hatte ich mir eine Datei mit 5000 beliebigen Variablen erzeugt und diese mit Zufallszahlen exportiert und es lief problemlos! Dieses Verhalten ist doch komisch?

lrecl vergrößern

Hallo Chris86,

mit "PROC EXPORT" werden nur Dateien ins Textformat exportiert, deren Zeilenlängen nicht 32767 Zeichen übersteigen.
Dies betrifft nicht nur die Namenszeile, sondern auch die Datenzeilen. Bei der Namenszeile tritt das Problem meist nur eher auf oder ist besser sichtbar.

Um die Datei trotzdem zu exportieren, musst Du ein wenig anders vorgehen. Es gibt zwei Möglichkeiten

Du benutzt den Export-Wizard statt eines Proc export-Statements. Statt "Standard Data Source" wählst Du "User defined Format", gibst anschließend den Dateinamen an und startest dann den EFI. Unter Options gibst Du den Delimiter an und wählst bei Record Length eine genügend große Länge (in deinem Beispiel mindestens 3300 * 32 (max. Länge Variablenname) + 3300 für den Delimiter. Pack ruhig noch mehr drauf, das hat keinen Einfluss auf den Export, wenn Du einen höheren Wert nimmst. Die anderen Optionen stellst du nach deinen Wünschen ein, und klickst auf OK.
Im EFI-Fenster kannst Du dann im Menü FILE-SAVE auswählen. Dann wird Deine Datei geschrieben.
Alternativ kannst Du mit EDIT-View SAS source das generierte Programm anschauen und/oder in den Editor kopieren und damit die Datei exportieren.
Der Nachteil dieser Methode ist, dass sich SAS ziemlich viel Zeit nimmt, bis der EFI startet.

Oder Du exportierst erst einmal mit Proc Export die Datei. Im Log-Fenster erscheint dann der generierte Code. Den kopierst Du dir in den Editor und entfernst die Zeilennummern am Anfang jeder Zeile (Spaltenweises Markieren). Es kann sein, dass Du dafür einen leistungsfähigeren Editor als den SAS-Editor nehmen musst (z.B. Notepad++).
Anschließend ersetzt Du beim File-Statement den Wert von lrecl=32767 durch einen höheren Wert und kannst die Datei dann hoffentlich richtig exportieren.

...
file 'C:\temp\deineDatei.csv' delimiter=',' DSD DROPOVER lrecl=128000;
...

Schöne Grüße

Jan

Vielen Dank, den Weg über

Vielen Dank,

den Weg über den Export-Wizard kannte ich bisher noch nicht. Es klappt aber alles Bestens!