============================================================================= Verwendung externer Dateien unter SPSS und SAS I. Kemmerzell ============================================================================= Warum Datentransfer? ==================== Im Rahmen groesserer oder komplexerer Projekte genuegt es meist nicht, lediglich ein Softwareprodukt zur Bewaeltigung aller Aufgaben einzusetzen. Bei der Abfassung einer Diplom- oder sonstigen Examensarbeit etwa bedient man sich sinnvollerweise eines leistungsstarken Textverarbeitungsprogrammes. Liegen empirische Untersuchungen zugrunde, erscheint eine Auswertung der Da- ten mit Hilfe eines statistischen Softwarepaketes sinnvoll. Zur Praesentation der Ergebnisse eignen sich haeufig Tabellen oder Graphiken, die wiederum an- dere Programme benoetigen. Zwar werden bereits eine Vielzahl von sogenann- ten integrierten Softwareprodukten am Markt angeboten, die alle oder zumin- dest einige der angesprochenen Bereiche abdecken. Diese Produkte besitzen den nicht zu unterschaetzenden Vorteil einer sehr hohen Kompatibilitaet der einzelnen Funktionsbereiche. Allerdings liegt die Leistungstiefe dieser Pro- dukte i.A. deutlich unter dem Niveau der jeweiligen Spezialprogramme. Daher erscheint es zweckmaessig, die Spezialprodukte in ihrer Anwendung ge- eignet zu kombinieren. Beispielsweise ist es haeufig erforderlich, eine Gra- phik in einen Textteil zu integrieren: eine Aufgabe, die heutzutage jedes leistungsstarke Textverarbeitungsprogramm erfuellen sollte. Die Arbeit mit Klebstoff und Schere muss endgueltig der Vergangenheit angehoeren! Bei der Anwendung statistischer Softwareprodukte zeigt sich haeufig eine Schwaeche bei der Verwaltung des Datenbestandes. Zwar bieten Hersteller wie SAS und SPSS eigene Module zum Datenmanagement an, jedoch ist deren Handhabung fuer die Eingabe und Kontrolle groesserer Datensaetze m.E. zu umstaendlich bzw. ungeeignet. Eigens fuer derartige Aufgaben konstruiert sind dagegen Datenbanken und Tabellenkalkulationsprogramme. Daher erscheint es naheliegend, die Dateneingabe mit diesen Programmen durchzufuehren und statistische Softwareprogramme erst zur Auswertung der Daten heranzuziehen. Entscheidende Voraussetzung ist die Kompatibilitaet der einzelnen Datenformate. Grundsaetzlich kann (hoffentlich) jedes Programm rechteckige Datenmatrizen im ASCII-Format lesen und schreiben. Allerdings sollte der Transfer derar- tiger ASCII-Dateien nur als Notloesung dienen, da der Vorzug der vollstaen- digen Kompatibilitaet durch einige gravierende Nachteile erkauft werden muss: - Beim Schreiben von ASCII-Dateien kann zusaetzlicher Aufwand entste- hen, da per Voreinstellung moeglicherweise kein Abstand zwischen den Daten verschiedener Variablen gesetzt wird. - Haeufig muessen Variablennamen, -formate und/oder -etiketten beim Lesen erneut definiert werden. Ausserdem muss dabei die Position der Daten bekannt sein ("Spaltenzaehlen"). - Gegebenenfalls muss die ASCII-Datei veraendert werden. - Die Lese- und Schreibvorgaenge benoetigen meist viel Zeit. - Durch die oben genannten Schwaechen ist der Datenaustausch von ASCII-Dateien sehr fehlerbehaftet. - Moeglicherweise sind bei der Dateneingabe Methoden zur Fehlerpro- phylaxe (z.B. Bereichsgrenzen von Variablen) oder zur Vereinfachung (z.B. Sprunganweisungen) entwickelt worden, die bei der Ausgabe einer ASCII-Datei nicht beruecksichtigt werden koennen. Da die Hersteller laengst diese Maengel erkannt haben, wurden individuelle Dateiformate fuer die spezifischen Anwendungsprobleme entwickelt. Allerdings sollten die Kunden natuerlich an eigene Produkte gebunden werden, so dass die Anbieter keinerlei Ehrgeiz zur Befriedigung der Kompatibilitaetswuensche seitens ihrer Kunden entwickelten. Gluecklicherweise haben viele Firmen heute erkannt, dass eine hochgradige Kompatibilitaet ihrer Produkte ein wichtiges Qualitaetsmerkmal darstellt, aus dem unter Umstaenden wesentliche Wettbewerbsvorteile resultieren koennen. Andererseits wird der Konsument heutzutage mit einer Flut diverser Software- produkte ueberschuettet, so dass eine vollstaendige Kompatibilitaet selbst bei bestem Willen nicht mehr realisiert werden kann. Daher ist es sinnvoll, wenn sich die Anbieter auf die Realisierung von Schnittstellen zu den wichtigsten Produkten (z.B. Marktfuehrer) beschraenken. Wird diese Kompatibilitaet beim Lesen und Schreiben der Daten gewaehrt, so steht einem sinnvollen Datenaus- tausch nichts mehr im Wege. Soweit einiges zum Hintergrund des Problems, doch nun zur eigentlichen Beant- wortung der Frage: Wie kann ich meine Datei, die mit dem Programm X erstellt wurde, in das Programm Y uebertragen? Die Loesung der fuer die Anwendung sta- tistischer Programmpakete wichtigsten praktischen Faelle soll im folgenden kurz erlaeutert werden. Verwendung einer Excel-Datei in SPSS/PC+ ======================================== SPSS/PC+ kann (in der aktuellen Version 4.01) das von Excel verwendete XLS-Format nicht lesen. Jedoch kennen beide Produkte (nach Angaben der Her- steller) die Formate von Lotus 1-2-3 (WKS, WK1, WK3), SYLK-Multiplan (SLK) sowie dBase II, III und IV (DBF). Auf die Verwendung des WK3-Formates sollte verzichtet werden, da SPSS/PC+ die von Excel exportierten WK3-Dateien nicht fehlerfrei liest. Alle anderen Daten- formate koennen im Prinzip verwendet werden. Dabei sollten Sie unbedingt folgende Hinweise beachten: - Excel speichert ein Datum als ganze Zahl (1, 2, ...), wobei die Dar- stellung des Datumswertes von der entsprechenden Bezugsgroesse ab- haengt. Dieser Wert kann im Befehlsfeld Optionen Berechnen nachge- schlagen werden: Ist dort der Befehl 1904-Datumswert aktiviert, so ist die Bezugsgroesse der 2. Januar 1904, d.h. die Zahl 1 entspricht dem 2.1.1904, die Zahl 2 entspricht dem 3.1.1904 etc. Andernfalls kor- respondiert der 1.1.1900 mit der Zahl 1. Bei der Verwendung der Bei- spieldatei AUSGABEN.XLS erscheint als erstes Datum der 5.1.91, wenn das 1904-Datumssystem aktiviert ist. Andernfalls wird der 4.1.87 angezeigt. Beide Werte entsprechen der Zahl 31781, die nach Markie- rung der Datumsspalte(n) angezeigt wird, wenn Sie die Befehle "Format Zahlenformat Standard" anklicken. Bevor Sie die Datei in einem der angesprochenen Datenformate spei- chern, sollten Sie stets das 1900-Datumssystem waehlen, also den Be- fehl 1904-Datumswerte ausschalten. Danach koennen Sie ein beliebiges, geeignetes Datumsformat (z.B. T.M.JJ) verwenden. - Bei den Datenformaten von Lotus 1-2-3 und dBase werden Datumsangaben im amerikanischen Datumsformat M/T/JJ geschrieben. Dagegen wird in den Formaten SYLK und dBase II nur die ganze Zahl dargestellt. Das Waehrungssymbol DM wird in ein $-Zeichen verwandelt, falls in "Format Zahlenformat" ein entsprechendes Zahlenformat gewaehlt wurde. Sie sollten jedoch in SPSS/PC+ kein Waehrungssymbol verwenden und daher ggf. das Zahlenformat aendern (z.B. Standard). - Bei der Verwendung des SYLK-Formates werden Sie deutliche Geschwindig- keitseinbussen im Vergleich zu den anderen Formaten hinnehmen muessen. Da ausserdem keine geeignete Darstellung eines Datums gewaehrleistet wird (s.o.), sollten Sie auf die Verwendung von SLK-Dateien verzichten. - Bei der Verwendung von Umlauten in alphanumerischen Variablen treten bei den Lotus- und Multiplan-Formaten Konvertierungsfehler auf, dagegen erfolgt die Umsetzung in den dBase-Formaten fehlerfrei. Sie sollten daher die Formate von dBase III oder IV benutzen. Da es sich dabei um ein Datenbankformat handelt, muessen Sie den zu ueber- tragenden Datenbereich markieren und danach den Befehl "Daten Daten- bank festlegen" anklicken. Vermeiden Sie die spaltenweise Markierung, sondern markieren Sie lediglich den Bereich der tatsaechlich zu ueber- tragenden Variablen, da SPSS/PC+ sonst stets 16383 Faelle liest, wo- bei die meisten (sicherlich) aus fehlenden Werten bestehen. - Unabhaengig vom gewaehlten Datenformat sollten Sie fuehrende Leerzeilen stets mit dem Befehl "Bearbeiten Loeschen" eliminieren, wobei die darauffolgenden Zellen nach oben verschoben werden mues- sen. In der ersten Zeile sollten die Variablennamen stehen, die aus hoechstens acht Zeichen bestehen, wobei das erste Zeichen ein Buch- stabe sein muss. Laengere Dateinamen werden von SPSS/PC+ 'abgeschnit- ten'. Ausserdem sollten Sie fuer den gesamten Datenbereich mit dem Befehl "Format Schriftart" eine aequidistante Schriftart (z.B. Courier) waehlen. Achten Sie ausserdem unbedingt auf eine ausreichende Spalten- breite, die sich immer am groessten denkbaren Spalteneintrag orien- tieren sollte. - Speichern Sie nun die Datei, indem Sie im Befehlsfeld "Datei Speichern unter" den Menuepunkt "Dateiformat" und dort das entsprechende Format waehlen. Danach sollten Sie ggf. den vorgeschlagenen Dateinamen (jedoch nicht die Extension) veraendern. Nachdem die Daten nun in einem geeigneteten Datenformat gespeichert sind, koennen Sie von SPSS/PC+ gelesen werden. Dazu stehen folgende beiden Moeglich- keiten zur Verfuegung: 1. Der Befehl TRANSLATE FROM in SPSS/PC+ 2. Bearbeiten der Datei in Data Entry ad 1.: Das Einlesen der Daten erfolgt mit dem Befehl TRANSLATE FROM 'dateiname' optionen. im Menuebereich "Daten lesen/schreiben". Dabei bezeichnet 'dateiname' den vollstaendigen Pfadnamen der Datei. Befindet sich die Datei im aktuellen Verzeichnis, so kann die Angabe des Verzeichnisnamens entfallen. Die weiteren Parameter 'optionen' und deren Bedeutung finden Sie im Hilfsmenue von SPSS/PC+. Haben Sie beispielsweise den gesamten Datensatz der Excel-Datei AUSGABEN.XLS im dBase IV-Format unter dem Namen AUSGABEN.DBF auf Ihrer Diskette (Laufwerk A:) gespeichert, so laedt SPSS/PC+ mit dem Befehl TRANSLATE FROM 'a:ausgaben.dbf' /MAP. den Inhalt als aktive Datei. SPSS/PC+ erkennt dabei an der Extension DBF das Datenformat. Nach Ausfuehrung des Befehls erscheint eine Meldung ueber die Anzahl der geladenen Variablen und Faelle. Der Parameter /MAP veranlasst die Ausgabe der Variablennamen, -laengen sowie -formate und eignet sich zur Kontrolle der Datenuebertragung. Dabei wird stets die neue Variable D_R generiert, die ausschliesslich fehlende Werte enthaelt und mit dem Befehl MODIFY VARS /DROP D_R. geloescht werden kann. Schliesslich sollten Sie den Befehl LIST im Menuepunkt "Datenanalyse Berichte und Tabellen" zur Bildschirmausgabe der Daten verwenden. Bei der Verwendung der dBase-Formate wird der Inhalt der ersten Zeile als Liste von Variablen- namen interpretiert (s.o.). Moechten Sie Ihre Daten aus der Lotus-Datei AUSGABEN.WK1 (Laufwerk A:) lesen, so sollten Sie den folgenden Befehl verwenden: TRANSLATE FROM 'a:ausgaben.wk1' /MAP /FIELDNAMES. Wichtig ist der Parameter /FIELDNAMES, durch dessen Angabe SPSS/PC+ die Ein- traege der ersten Zeile als Variablennamen interpretiert. Ohne diese Option werden die Buchstaben A, B, C etc. als Variablennamen verwendet, ausserdem wird saemtlichen Variablen der Variablentyp String zugewiesen. Anstelle der urspruenglichen numerischen Werte erscheinen fehlende Werte. Die Option /FIELDNAMES wirkt wie der Parameter /RANGE zur Bestimmung des zu verwenden- den Datenbereiches nur bei sogenannten Spreadsheet-Dateien (Multiplan, Lotus, Symphony). Bevor Sie Ihre SPSS/PC+-Sitzung beenden, sollten Sie unbedingt den Inhalt Ihrer aktiven Datei mit dem Kommando SAVE OUTFILE 'a:ausgaben.sys'. als SPSS/PC+-Systemdatei speichern. ad 2.: Neben dem direkten Einlesen der Daten in SPSS/PC+ bietet sich alterna- tiv die Verwendung von Data Entry II an. Dies ist insbesondere sinnvoll, wenn die Daten ergaenzt oder kontrolliert werden sollen. Data Entry wird mit dem Kommando SPSS /DE oder alternativ ueber SPSS/PC+ im Befehlsmenue "Daten lesen/schreiben" aufgerufen. Waehlen Sie die Menueebene "Files" () und dort den Menuepunkt "Get File" (). Danach werden Sie nach dem verwen- deten Datenformat und schliesslich nach dem Dateinamen gefragt. Nach der Wahl des dBase-Formates und Eingabe von A:AUSGABEN.DBF erscheint dann eine Box mit dem Titel New File. Hier geben Sie den Namen der neuen SPSS/PC+-Systemdatei an, in die die neuen Daten geschrieben werden. Da hier standardmaessig die Extension SYS gewaehlt wird, sollten Sie hier AUSGABEN eingeben. In der Menue- ebene "Data" () koennen Sie nun die Daten betrachten und ggf. modi- fizieren. Beim Lesen einer Spreadsheet-Datei erscheint nach Eingabe der Dateinamen die Box "Range". Hier koennen Sie den Bereich der einzulesenden Daten angeben. Sollen saemtliche Daten gelesen werden, druecken Sie einfach die RETURN-Taste. Danach erscheint eine Box mit dem Titel "Read variable names from row 1?" Hier muessen Sie "yes" bestaetigen, wenn die Eintraege der ersten Zeile als Variablennamen gewaehlt werden sollen (dies entspricht dem oben erlaeuterten Parameter /FIELDNAMES). Andernfalls muss hier "n" oder "no" eingegeben werden. Schliesslich sollten Sie die Datei mit und als SPSS/PC+- Systemdatei speichern. Portable Dateien in SPSS/PC+ und SPSS-X ======================================= Neben dem Datentransfer zwischen den verschiedenen Softwareprodukten unter dem Betriebssystem MS-DOS besteht die Moeglichkeit des Datenaustausches zwischen verschiedenen SPSS-Produkten mit Hilfe sogenannter portabler Dateien. Dabei handelt es sich um ASCII-Dateien, die zwischen Zentralrech- ner und PC mit Hilfe eines Kommunikationsprogrammes (z.B. FTP, KERMIT) uebertragen werden koennen. Um eine portable Datei des aktiven Datensatzes zu erstellen, die Sie auf dem Zentralrechner mit SPSS-X bearbeiten koennen, sollten Sie in SPSS/PC+ folgenden Befehl verwenden: EXPORT OUTFILE='dateiname' optionen. Fuer 'dateiname' muss dabei der Dateiname (ggf. Pfadname) der Export-Datei angegeben werden. Die weiteren Parameter 'optionen' des Befehls EXPORT und deren Bedeutung finden Sie im SPSS/PC+-Menue. Beispiel: EXPORT OUTFILE='A:AUSGABEN.PTX'. Mit Hilfe von FTP koennen Sie die erstellte Datei zum Zentralrechner senden. Dabei sollten Sie folgende Kommandos verwenden: ft urz username password put dateiname zieldateiname bye Dabei muessen Sie fuer 'username' Ihre individuelle Benutzerkennung und fuer 'password' das entsprechende Passwort zum Host-Zugang eingeben. Ferner be- zeichnet 'dateiname' den DOS-Dateinamen und 'zieldateiname' den Namen der Host-Datei. Dabei sollten Sie Pfadnamen angeben, wenn 'dateiname' bzw. 'zieldateiname' nicht in den aktuellen Verzeichnissen gesucht bzw. abgelegt werden sollen, Beispiel: ft urz rza012 put a:ausgaben.ptx spssx:ausgaben.ptx bye Bei der Uebertragung mehrerer Dateien koennen anstelle von "put" der Befehl "mput" und bei "dateiname" die DOS-Wildcardzeichen verwendet werden. In Ihrer SPSS-X-Steuerdatei muessen nun folgende Kommandos stehen, um die portable Datei als aktiven Datensatz zu definieren und ihn danach als SPSS-X-Systemdatei zu speichern: FILE HANDLE portdatref/NAME= 'portdatname' FILE HANDLE sysdatref/NAME= 'sysdatname' IMPORT FILE= portdatref SAVE OUTFILE= sysdatref Die Kuerzel "portdatname" und "sysdatname" bezeichnen die vollstaendigen AOS/VS-Pfadnamen der portablen Datei sowie der SPSS-X-Systemdatei. Fuer "portdatref" und "sysdatref" muessen verschiedene SPSS-X-Kurzbezeichnungen gewaehlt werden, die aus hoechstens acht alphanumerischen Zeichen bestehen, wobei das erste Zeichen ein Buchstabe ist. Allerdings werden Sonderzeichen (z.B. Umlaute) in portablen Dateien nicht fehlerfrei umgesetzt, so dass auf Ihre Verwendung verzichtet werden sollte. Danach koennen beliebige weitere SPSS-X-Befehle verwendet werden. Ergibt sich dabei eine Veraenderung des Da- tensatzes, so sollte der Befehl SAVE OUTFILE am Dateiende stehen. Fuer die Beispieldatei eignen sich folgende Kommandos: FILE HANDLE PORTDAT /NAME=':udd:rza012:spssx:ausgaben.ptx' FILE HANDLE SYSDAT /NAME=':udd:rza012:spssx:ausgaben.sys' IMPORT FILE=PORTDAT SAVE OUTFILE=SYSDAT Der Datensatz der so erzeugten SPSS-X-Systemdatei kann nun bei jedem SPSS-X-Aufruf mit dem Befehl GET FILE aktiviert werden. Verwendung von SPSS-X-Datensaetzen in SAS ========================================= Besonderes einfach gestaltet sich die Einbindung eines SPSS-X-Datensatzes in SAS. Dazu muessen Sie in SAS nur folgende Kommandos waehlen: LIBNAME sasverzeichnisref 'sasverzeichnisname' FILENAME spssdateiref 'spssdateiname' PROC CONVERT SPSS= spssdateiref OUT= sasverzeichnisref.sasdatensatzref FIRSTOBS= n1 OBS= nanz RUN; Dabei besitzen die verwendeten symbolischen Namen folgende Bedeutung: - sasverzeichnisref: SAS-Kurzbezeichnung des Verzeichnisses, dem der neue SAS-Datensatz zugeordnet werden soll - sasverzeichnisname: vollstaendiger Pfadname des Verzeichnisses, dem der neue SAS-Datensatz zugeordnet werden soll - spssdateiref: SAS-Kurzbezeichnung fuer die SPSS-X-Systemdatei - spssdateiname. vollstaendiger Pfadname der SPSS-X-Systemdatei - sasdatensatzref: SAS-Kurzbezeichnung des SAS-Datensatzes - n1: Nummer der ersten Beobachtung des SAS-Datensatzes - nanz: Anzahl der Beobachtungen des SAS-Datensatzes Der gesamte SPSS-X-Datensatz wird gelesen, wenn die optionalen Parameter FIRSTOBS und OBS wie in unserem Beispiel entfallen: LIBNAME sasdat ':udd:rza012:sas_daten'; FILENAME ausgspss ':udd:rza012:spssx:ausgaben.sys'; PROC CONVERT SPSS= ausgspss OUT= sasdat.ausgaben; RUN; _____________________________________________________________________________ Ansprechpartner im Universitaetsrechenzentrum: Ingo Kemmerzell (Zimmer IN: AS-301, Tel.: -249 E-Mail: kemmerzell) Rainer Becker (Zimmer EI: eO-107, Tel.: -296 E-Mail: becker) _____________________________________________________________________________