SAS Tutorial: Loading Tabulatorzeichen getrennte Dateien

25. Januar 2008 von: Blink 7

sas.jpg

Stellen Sie sich vor gegeben sind eine Liste der wichtigsten kanadischen politischen Spender und möchten es in SAS für die weitere Analyse zu laden. Die Liste ist in einer Textdatei mit Feldern begrenzt durch Tab-Zeichen. SAS Enterprise Guide (EG) bietet Assistenten, um automatisch eine Vielzahl von Dateiformaten importieren, aber mit diesen GUI preempten die Chance für die Automatisierung oder zusätzliche Verarbeitung beim Import. Mit Code zum Laden von Daten bietet mehrere Vorteile:

  • Die Möglichkeit, Daten umzuleiten, um mehrere Datensätze
  • Fähigkeit zu reinigen und Ändern von Daten während der Ladezeit
  • Fähigkeit, nicht mehr benötigte Daten löschen
  • Portabilität und Wiederverwendbarkeit

Voraussetzungen

  • SAS v9.x oder SAS Enterprise Guide 4.x
  • Grundlegende Kenntnisse des SAS Data Step
  • Basic Know-how zum Laden und Ausführen von SAS Programmen
  • Grundlegende Kenntnisse der numerischen und Zeichenformatierung
  • Der Zugang zu lesen SAS / write Dateibereich

Downloads

Take 1: Basis-Loader

Öffnen Sie die SAS-Programm tab1.sas (die mit SAS Enterprise Guide 4 kann alternativ die LoadTabDelimit Projekt-Datei, und doppelklicken Sie auf den Code tab1 Symbol der SAS Project Designer-Fenster geöffnet).

03.jpg

Wie Sie im obigen Screenshot sehen können, liest SAS Text-Dateien mit dem Data Schritt. Ein Minimum von zwei Erklärungen sind erforderlich, um ordnungsgemäß einen Text-Datei zu laden:

  • INFILE - Die INFILE-Anweisung gibt den Text-Datei geladen werden soll. Der vollständige Pfad angegeben werden (wie in diesem Beispiel getan) oder ein Pfad relativ zum Standard-SAS-Dokument-Verzeichnis kann benutzt werden.
  • INPUT - Die Input-Anweisung spezifiziert die Felder, die von der Text-Datei gelesen werden soll und wie sie gelesen werden soll.

Lassen Sie uns zunächst einen Blick auf die INFILE-Anweisung. Um dieses Beispiel funktioniert, müssen Sie wahrscheinlich den Weg von 'r Änderung: \ namelist.txt "auf den Standort der tabulatorgetrennte Datei. Außerdem gibt es zwei Optionen, die in der INFILE-Anweisung:

  • DLM - Das DLM-Option ermöglicht es dem Benutzer, das Trennzeichen zwischen den Feldern in einer Datei. In diesem Fall haben wir '09 'x als Trennzeichen, die das Sechseck Darstellung der Tab-Zeichen angegeben ist. Andere häufige Trennzeichen gehören dem Komma und der Raum. Trennzeichen sollte in einfachen Anführungszeichen angegeben werden. Wenn die DLM Option nicht enthalten ist, geht davon aus SAS das Trennzeichen ist ein Leerzeichen
  • DSD - Der DSD-Option weist den Daten Schritt aufeinander folgende Trennzeichen als ein leerer Wert für die aktuelle Variable zu behandeln. Ohne diese Option würde, SAS einfach zum nächsten Punkt von Felddaten und las es in den aktuellen Daten Schritt Variable, die die Datei auf die Daten und Variablen falsch geladen misalign verursachen könnten. DSD entfernt auch Anführungszeichen beim Lesen von Daten aus Text-Dateien.

Als nächstes wollen wir einen Blick auf die INPUT-Anweisung. Variablennamen werden erstellt, um die einzelnen Felder speichern, um nacheinander in die Daten gelesen werden sollen. Es gibt mehrere Varianten der INPUT-Syntax. Die Syntax in diesem Beispiel wird genau festgelegt, wie die einzelnen Variablen gelesen werden sollte. Denn jetzt ist der Code SAS angewiesen, um alle Daten in Textfelder, dass maximal 16 Zeichen lang sein ($ 16 gelesen werden.). Es gibt viele Alternativen, um diese Felder zu lesen, von denen einige werden später behandelt.

04.jpg

Das Ausführen des tab1 Code sollte in einer Ergebnismenge Daten identisch mit dem obigen Screenshot.

Take 2: Aktualisieren der Datentypen

Tab1 geladen alle Felder als 16 Zeichen Text, aber das ist vielleicht nicht für rein numerische Felder angemessen. Erstens: Angenommen, Sie möchten herausfiltern Menschen, die jünger als 18 Jahre (wie wir später tun). Wenn das Alter im Character-Format links finden Sie herauszufiltern Menschen im Alter von 10-17 Jährigen, aber nicht 2-9, da die Ziffern 2, 3, 4, ..., 9 eine größere ASCII-Wert haben als die Nummer 1 in 18. Sie könnte das Problem durch die Umwandlung das Textfeld auf numerische bevor numerische Vergleiche zu beheben, aber es ist genauso einfach, um das Feld direkt in eine numerische Variable zu lesen.

Zweitens kann man versucht sein, die Parteizugehörigkeit als "Konservative Partei Kanadas Liste" nicht einfach "Konservativen". Die Partei, die lange Form-Name ist 25 Zeichen lang sein und wird abgeschnitten, wenn sie in ein 16-Zeichen-Variable zu lesen.

05.jpg

Um diese Probleme zu lösen, ändern Sie die Variable Alter, die Daten als 3-stellige Zahl (3 lesen.) Und ändern Sie die Partei Variable Daten wie ein 32-Zeichen-Variable ($ 32 zu lesen.).

06.jpg

Führen Sie den Code tab2. Das Alter Spaltenüberschrift sollte nun eine runde blaue Symbol, während die Altersgruppe der rechten Spalte Daten gerechtfertigt ist. Dies deutet darauf hin, dass die Spalte numerische Daten enthält.

Take 3: Entfernen der Titelzeile

Incoming Text-Dateien enthalten oft die Feldnamen in der ersten Zeile. Dies ist unnötig, da die Variablennamen sind definiert in der INPUT-Anweisung des DATA-Schritt. Standardmäßig ist der Titelzeile als Daten, die unerwünscht ist zu lesen. Es gibt verschiedene Arten von Logik, die verwendet werden, um Titelzeilen entfernen kann, aber wenn Sie sicher sind, dass der Titel Linie immer in der ersten Zeile werden (dh keine leeren Header-Zeilen), dann der einfachste Ansatz ist schlicht und einfach nicht auf die erste Line-Ausgang . Dies kann erreicht werden mit _N_, SAS Eingabesatz Zähler. Wenn _N_ = 1, werden die Daten nicht ausgegeben werden, um den endgültigen Daten festgelegt.

07.jpg

Eine Teilmenge if-Anweisung verwendet wurde, um den Wert der _N_ testen. Dieses Statement hat die allgemeine Form
IF <condition>;
Wenn die Bedingung falsch, den DATA-Schritte-Programm fließen wieder in den oben ohne das Ausführen beliebigen Code unter der Untergruppen bei. In diesem Fall ist die Untergruppen if-Anweisung wird nur wahr, wenn die Eingabe-Datensatz größer ist als ein zu bewerten, dh die implizite Ausgabe-Anweisung wird nur dann ausgelöst werden, wenn der Datensatz gelesen wird ist nicht der erste Datensatz in der Eingabe.

08.jpg

Führen Sie das tab3 und stellen Sie sicher, dass die Ausgabe nicht enthalten, die Header-Namen (siehe oben).

Take 4: Entfernen von schlechten Daten

Schließlich wird ein SAS-Programmierer trifft man auf zwei Arten von unerwünschten Daten:

  • Daten, die gerettet werden können oder zumindest muss gekennzeichnet werden
  • Daten, die absolut nutzlos und kann entfernt werden

Allgemein gesprochen, wobei letztere Kategorie sollten in der Nähe von Null minimiert werden, da es nur wenige Fälle, in denen Müll werfen Daten ohne weitere Analyse hat keinen Einfluss auf das Endprodukt sind. Aber nehmen wir an, für diese Übung, dass die Spende Informationen einfach nicht nutzbar ist, wenn es sowohl ein Vor-und Nachnamen enthält. Die Ausgabe enthält ein tab3 Montreal ansässig, die mit Nachnamen "Meier", aber keine begleitenden Vornamen. Wir können die Befreiung von diesem aufnehmen und jeden Datensatz, wie es durch die Kombination von bedingter Logik mit den Befehlen LENGTHN und DELETE.

09.jpg

LENGTHN gibt die Anzahl der nicht-leeren Zeichen in einem String. Wenn die LENGTHN Vergleich wertet auf Null können wir sicher sein, dass das Feld ausgewertet werden, ist entweder null oder aus Leerzeichen. Der DELETE-Befehl verhindert, dass die aktuellen Datensatz aus dem Schreiben auf die Output-Daten gesetzt.

10.jpg

Führen Sie das Tab4 und stellen Sie sicher, dass die Ausgabe Rekord sieben Datensätze enthält. Keiner der Datensätze sollten leere Vor-und Nachnamen enthalten (siehe oben)

Take 5: Filtern von Daten

Schließlich müssen wir einen Weg, mit den Daten umgehen zu konzipieren, ist nicht ganz geeignet, kann aber möglicherweise korrigiert werden. Ein Blick auf unsere Daten ist es unwahrscheinlich, dass nur ein geringer wäre eine schwere finanzielle Beitrag für eine bestimmte Partei, während es ebenso unwahrscheinlich, dass jemand 120 Jahre alt zu übertreffen. Denn jetzt kann es am besten, solche Aufzeichnungen getrennt von den anderen Daten für die weitere Beurteilung. Glücklicherweise macht es einfach, SAS, indem verarbeiteten Daten auf mehrere Datensätze Ausgang geroutet werden. Die folgenden Änderungen müssen an die Tab4 Code vorgenommen werden

  • Die Öffnung Daten Erklärung muss mehrere Datensätze angeben, eine für saubere Daten und eine für Daten, die untersucht werden muss
  • Der OUTPUT-Befehl muss klar definiert werden. Verarbeitete Daten müssen an einem der Daten gerichtet sein setzt auf eine Bedingung, die bestimmen, ob die Daten für weitere Untersuchungen erforderlich sind, wird auf

11.jpg

Siehe Screenshot oben. An der Spitze des Codes, der DATA-Anweisung definiert nun zwei Daten-Sets:

  • tab_v5 speichert Datensätze, die keine Änderung
  • tab_v5_reject speichert Datensätze der weiteren Untersuchung bedürfen

Nun ein Blick auf den unteren Bereich des Codes. Es gibt zwei explizite OUTPUT-Kommandos, die jeweils mit Namen der Daten gefolgt werden. Die Daten werden auf tab_v5 geschrieben werden, wenn das Alter der Person, die im Datensatz ist zwischen 18 und 120. Ansonsten werden die Daten geschrieben werden, um tab_v5_reject. Die Ausführung der beiden OUTPUT-Anweisung setzt voraus, dass der Datensatz nicht bereits über die Logik gelöscht wurde hinzugefügt Tab4.

12.jpg

13.jpg

Führen Sie den Code tab5. Zwei Datensätze erstellt werden - eine mit 6 Datensätze mit Zeiten im Bereich von 18-120 und die anderen mit einem einzigen Satz mit einem Alter außerhalb dieses Bereichs.

Es gibt Computer, Software und Demos für die statistische Analyse. Für SAS Software-Informationen und Anleitungen, nutzen Sie die Hilfe online buchen. Die Microsoft Office-Software umfasst die statistische Analyse in Excel aber diese Software tut Wunder. Beim Einkauf für Software, abholen Antivirus-Firewall-Software. Die Antivirus, dass die neuesten Viren-Definitionen hat, ist Norton AntiVirus. Im Telefon heutigen Entwicklung, ist es ein Muss, um in einem Internet-Telefon Handset zu investieren.

Abgelegt unter: Entwicklung, Tutorials
Tags:

Lassen Sie eine Antwort

Captcha
Geben Sie die Buchstaben den Sie oben sehen.