Wie kann ich in SAS eine CSV-Datei korrekt importieren?
- Einleitung
- Verwendung von PROC IMPORT
- Wichtige Hinweise zur Zeichencodierung
- Alternative: Import mit DATA Step und INFILE
- Probleme und Tipps beim Import
- Zusammenfassung
Einleitung
Das Importieren von CSV-Dateien in SAS ist eine häufige Aufgabe, die mit verschiedenen Methoden durchgeführt werden kann. Der korrekte Import ist entscheidend, um die Daten fehlerfrei und in einer für die Analyse geeigneten Form verfügbar zu machen. Im Folgenden wird ausführlich beschrieben, wie man eine CSV-Datei in SAS mit dem PROC IMPORT-Verfahren oder dem DATA Step importiert und dabei auf wichtige Parameter und Fallstricke eingegangen wird.
Verwendung von PROC IMPORT
Die wahrscheinlich einfachste und häufig verwendete Methode zum Importieren einer CSV-Datei ist die Nutzung von PROC IMPORT. Damit kann SAS die Daten automatisch einlesen und einen Datensatz erstellen. Ein typisches Beispiel sieht so aus:
proc import datafile="C:\Pfad\zur\Datei.csv" out=arbeit.meine_daten dbms=csv replace; getnames=yes; guessingrows=32767; run;Im Detail bedeutet das datafile= den Pfad der Quelldatei, out= den Namen des zu erstellenden SAS-Datensatzes. Mit dbms=csv wird das Dateiformat spezifiziert. Die Option replace überschreibt einen vorhandenen Datensatz mit demselben Namen.
Die Option getnames=yes sagt SAS, dass die erste Zeile der CSV die Spaltennamen enthält. Falls das nicht der Fall ist, kann man hier no verwenden und später die Variablennamen selbst definieren. Mit guessingrows=32767 wird SAS angewiesen, eine größere Anzahl von Datensätzen einzulesen, um den Datentyp besser zu bestimmen. Standardmäßig untersucht SAS nur die ersten 20 Zeilen, was häufig zu falscher Typ-Interpretation führt.
Wichtige Hinweise zur Zeichencodierung
Für das korrekte Einlesen ist die Zeichencodierung der CSV-Datei wichtig. Wenn die Datei nicht im Standard-Encoding (oft ANSI oder UTF-8 in neueren Systemen) vorliegt, kann das zu fehlerhaften Zeichen führen. Man kann SAS mithilfe der Option encoding= im proc import anweisen, den korrekten Zeichensatz anzunehmen:
proc import datafile="C:\Pfad\datei.csv" out=arbeit.meinedaten dbms=csv replace; getnames=yes; guessingrows=32767; encoding="utf-8"; run;Bei häufig verwendeten deutschen Umlauten empfiehlt sich UTF-8 oder Latin1 (ISO-8859-1), je nachdem wie die CSV erstellt wurde.
Alternative: Import mit DATA Step und INFILE
Wenn man mehr Kontrolle über den Importprozess benötigt oder wenn proc import aufgrund ungewöhnlicher Ausgangsdaten versagt, kann der Import via DATA Step und infile erfolgen. Dabei liest man die Datei zeilenweise ein und definiert die Variablen explicit. Ein Beispiel sieht so aus:
data arbeit.meinedaten; infile "C:\Pfad\datei.csv" dsd firstobs=2 encoding="utf-8" lrecl=32767 truncover; length Name $50 Ort $30; input Name : $50. Alter : 8. Ort : $30.;run;Hier bewirkt:
dsd (delimiter-separated data), dass SAS Kommata als Trenner interpretiert und Textzeichenketten, die in Anführungszeichen stehen, richtig behandelt.
firstobs=2 startet mit der zweiten Zeile, um die Kopfzeile zu überspringen (wenn vorhanden).
truncover sorgt dafür, dass SAS keine Fehler ausgibt, wenn die Zeilen kürzer als erwartet sind.
Die length-Anweisung definiert die Länge der Zeichenketten-Variablen vorab. Im input-Statement wird das Format angegeben, zum Beispiel $50. für einen String mit bis zu 50 Zeichen.
Probleme und Tipps beim Import
Häufig treten Probleme bei Daten mit eingebetteten Kommata (zum Beispiel bei Texten, die Kommas enthalten) auf. Die Option dsd hilft, diese korrekt auszuwerten, indem SAS Text in doppelte Anführungszeichen einschließt und dann das Komma innerhalb dieser Anführungszeichen ignoriert.
Ebenso ist auf die richtige Wahl des Trennzeichens zu achten. Fällt das Feldtrennerzeichen von Komma ab, etwa bei Semikolon CSVs, so kann die Option delimiter=; bei infile oder proc import hinzugefügt werden.
Zusammenfassung
Der Import einer CSV-Datei in SAS gelingt am einfachsten mit proc import, wobei man unbedingt darauf achten sollte, dass die ersten Zeilen für Variablentypbestimmung ausreichend sind (mit guessingrows). Bei komplexeren Fällen ist der DATA Step Import mittels infile eine flexible Alternative, die insbesondere bei Problemen mit der Zeichencodierung oder komplexen Feldinhalten hilfreich ist. Außerdem sollte immer geprüft werden, ob die Kodierung der Datei korrekt erkannt wurde, um Probleme mit Umlauten und Sonderzeichen zu vermeiden.
