Einlesen von Textdateien mit sehr langen Zeilen

Ähnliche Dokumente
viele ähnliche Datensätze automatisch einlesen

rechtsbündige Leerzeichen mit einlesen im Datastep

Fehlermeldung, wenn Anzahl der %do der %end entspricht - was läuft falsch?

Kreuztabelle als Data-Set so wie aus proc tabulate

Failed to transcode data from U_UTF8_CE to U_LATIN9_CE?!

Auslesen von SAS Systeminformationen über die aktuelle Log- Ausgabe

ebanking Business: Umwandeln der Lastschriftvorlagen in SEPA-Vorlagen mit automatischer Konvertierung von Kontonummer/BLZ in IBAN und BIC

Datenübernahme aus Fremdprogrammen

Achsenbeschriftung um 90 drehen

Anhang zur Frage Data statement und Proc Statement

Wie überprüfen, ob eine Datei existiert?

SPDS-Problem - proc summary auf View mit by-variable - Sortierung wird verlangt

Ermittlung der übereinstimmenden Variablen (-Namen) zweier Datasets

Dynamisch Makros aufrufen

10 Lesen und Schreiben von Dateien

Wie erreiche ich was?

Kurzanleitung. Toolbox. T_xls_Import

Leitfaden für den Import von Artikeln, Sicherheitsdatenblättern, Leistungserklärungen und CE-Kennzeichnungen

Import von XLS-Dateien aus einem Ordner in eine SAS-Datei

FuxMedia GmbH & Co. KG Bautzner Straße Dresden

Exportieren in excel sheets

Anwendungssoftware III (MATLAB)

Inventarliste mit Barcode

Import von Daten im Rechnungswesen

Importdatei EGID/EDID mit Excel erstellen und bearbeiten

Datenformat zum Import von CSV-Dateien

PROC GCHART HBAR Zeilenumbruch in Achsenbeschriftung

6 Ein- und Ausgabe. Bisher war unsere (Bildschirm-) Ausgabe leichtflüchtig (

Die Excel Schnittstelle - Pro Pack

Importdatei Grobkoordinaten mit Excel erstellen und bearbeiten

ipin CSV-Datenimport (Mac OS X)

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Skripte. Beispiel. M. Fyta Computergrundlagen 73/93

BeamNT-Schnittstelle zum Rechnungswesen von Sage 50

Programme laufen im Programm-Editor, aber nicht im Enterprise Guide?

ecall sms & fax-portal

dato Denkwerkzeuge nut.s Software TS Technische Spezifikation Import AS400 Projekt nut.s Software Betrifft Import AS400 Autor Bernd Maierhofer

Einführung in die Programmierung 1

Neben dem Symbol Entwurfsmodus ist das Symbol Befehlschaltfläche zu sehen.

Beispiel des Zusammenführens der APV- Tabellen Stammdaten und Verlaufsdaten mithilfe von Access

Import von Adressen aus einer Excel-Tabelle

CSV Import WP-Meldung.doc

VBA mit Excel Grundlagen und Profiwissen

Versuch: Öffnen der Datei aus Access heraus: Laden Sie die Datei aus einer leeren Access-Umgebung heraus:

Benutzer-Handbuch. Import / Export von Adressen

Alexander Syndikus (h_da) Informatik für CuB WS 2015/16-1/43. Teil IX. Dateien

1 Visual Basic for Application mit Excel (VBA)

Text- und Excel-Dateien in GeoMedia

Tabellenkalkulation mit Excel

CSV-Import von Zählerständen im Energiesparkonto

hyscore Sollwerte-Import Version 3.1.6, September 2007

Barcode Master. Barcode Generator für PC Windows und MAC OS. Bedienungsanleitung und Handbuch. Version 1.1. Dr.J.Willrodt /

AnSyS.ERP V3 AnSyS.B4C

So funktioniert der Szenario-Manager

PIWIN 1 Übung Blatt 5

Experte. I-CH-118 Strukturiert implementieren

Microsoft Excel 2016 Relative und absolute Bezüge

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

ACL SKRIPTHUB FAQ. Was ist ein SkriptHub? Wie finde ich den besten Einstieg in SkriptHub? FAQs

xcall Technische Dokumentation

Hilfe SDV (Exportmodul Export.exe) - August 2007 V Export von SDV Daten Grundeinstellungen Datenexport direkt nach Excel

Anleitung SEPA Umstellung

1. Einführung Hinweis:

Die besten Excel-Tastenkombinationen im Überblick

Workshop 6. März 2013

Import und Export von Übergängern

Online-Ansichten und Export Statistik

MySQL Queries on "Nmap Results"

SAS-Online Dokumentation: zu finden über Internetsuche nach sas online documentation

11 Tabellen als Inhaltselement (ohne RichTextEditor)

Probleme beim Projekt-Speichern

Erstellen von Formbriefen, Adressetiketten und Briefumschlägen ohne Serienbrief-Assistenten

Computer & GNU/Linux Einführung Teil 4

SAS für Excel-Anwender

Lohnlaufdatenimport Schnittstellen

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Funktionale Programmierung Übung 01. Dozent: mein Dozent Tutor: mein Tutor Studenten: person1 und person2 tt. mm. jjjj

Computerservice Ingrid Weigoldt

Serienbrief erstellen

Rekonstruktion der SolarLog minxxxxxx.js-dateien aus Daten, die mit dem ELV-EM1010PC-System und meinen Makros erfasst wurden

VerBIS Arbeitshilfe. Erstellen von Serienbriefen und Excel-Listen Version PRV 13.02

SQL-Loader. Prof. Dr. Waldemar Rohde Dipl.-Ing. Jörg Höppner

Gebrauchsanleitung Software TitroLine-Chart

KISSsys Anleitung: Lagerkräfte aus KISSsys Modell exportieren

Mit Formatierungszeichen arbeiten

Tabellenkalkulationsprogramm EXCEL

Central-Office / RAP

Informatik I. Informatik I. 6.1 Programme. 6.2 Programme schreiben. 6.3 Programme starten. 6.4 Programme entwickeln. 6.1 Programme.

Erstellt: Maniac EXCEL 2013 ALLGEMEIN STARTSEITE. Excel-Version: MS Excel 2013

Anleitung Madison CMS

Projekt Sudoku 1. Teil Case Select

Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY.

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Import- und Export-Schnittstellen. FRILO Software GmbH Stand:

O'REILLY 8 Beijing Cambridge Farnham Köln Sebastopol Taipei Tokyo. Reguläre Ausdrücke Kochbuch. Jan Goyvaerts & Steven Levithan

Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen!

Transkript:

News Artikel Foren Projekte Links Über Redscope Join List Random Previous Next Startseite Foren ETL & Base SAS Einlesen von Textdateien mit sehr langen Zeilen 8 September, 2011-09:32 L Im Umgang mit SAS bin ich Neuling und versuche gerade, eine aus Excel exportierte Messwerttabelle einzulesen (mit Tabulator als Trennzeichen). (Das SAS läuft auf einem Unix- Server; daher dürfte direkter Excel-Import schwierig sein, nehme ich an. Richtig?) Die Tabelle enthält diverse verschiedene Formate: Datum, Zeichenketten, ganze Zahlen und Zahlen in wissenschaftlicher Darstellung, sowie manchmal auch vielen leeren Spalten dazwischen, alles getrennt jeweils einen Tabulator. Im Falle von vielen nebeneinander befindlichen leeren Spalten heißt das natürlich auch: viele Tabulatoren nebeneinander. Meine Datei lese ich mit folgender Kommandosequenz (gekürzt): INFILE 'Dateiname.txt' DLM='09'x DSD MISSOVER FIRSTOBS=133 LINESIZE=255; INPUT DatumMess DatumProbe Probenbezeichnung $ /*... */; Es werden dabei insgesamt bis zu 47 Spalten eingelesen (von denen aber normalerweise nicht alle gefüllt sind). Mein Problem ist jetzt, dass bei sehr vielen leeren Spalten nebeneinander, vor allem im "hinteren" Bereich einer Zeile, gerne leere Spalten überlesen werden und die hintersten Elemente in der Folge zu weit links landen. Gibt es einen offensichtlichen Fehler, den ich dabei begangen habe? Wäre klasse, wenn Ihr mir weiterhelfen könntet. Foren: ETL & Base SAS TERMSTR? 8 September, 2011-15:00 JanHeuer ohne die Daten und ohne das LOG kann man nur raten, was da schief geht. Bei deinem INFILE- Statement sind mir zwei Dinge aufgefallen: Zum einen scheint mir die Option LINESIZE für 47 Spalten sehr klein. Du hast ja schon 70 Zeichen in den ersten drei Spalten. Windows(Excel) und UNIX verwenden unterschiedliche Zeilenenden. Du solltest es mal mit TERMSTR = CRLF versuchen, da Excel den Zeilenumbruch innerhalb einer Zelle mit LF markiert. Dies

ist aber unter UNIX das Standardzeichen für einen Zeilenumbruch. SAS liest zumindest unter Windows die Daten ohne die TERMSTR - Option falsch ein, wenn in Zellen Zeilenumbrüche vorkommen. Schöne Grüße Jan Neue Frage: Datum einlesen u. "Einlesen von Textdateien": Erledi Hallo Jan, 9 September, 2011-13:12 L erstmal danke für den Tipp mit der TERMSTR-Option und der Zeilenlänge. Ich habe das Problem mit den Spalten doch noch selbst gelöst: Es lag schlicht und ergreifend daran, dass in der betreffenden Exceltabelle Spalten fehlten, was bei einer derartig breiten Tabelle ja nicht unbedingt direkt auffällt. Und da ich eher an meinen SAS-Kenntnissen als an den zu analysierenden Daten gezweifelt habe, bin ich auch nicht auf die Idee gekommen, dort nach dem Fehler zu suchen. Tut mir leid, Euch damit belästigt zu haben. Ein Problem habe ich aber noch nicht selbst lösen können: In den ersten beiden Spalten der Tabelle ist jeweils ein Datum der Form "22.04.2009" enthalten. Das als String einzulesen funktioniert auch tadellos, ist aber nicht unbedingt das, was ich möchte. Ich habe versucht, die ersten beiden Zellen als "Datum" einzulesen mit folgendem Ansatz: INPUT DatumMess DatumProbe Probenbezeichnung /*...*/ Das Resultat (Logfile) ist dann erstmal der Hinweis des Programms: NOTE: Variable DEUDFDD10 ist nicht initialisiert. Und als Ausgabe während des Einlesens: DatumMess=22.04.2009 DEUDFDD10= DatumProbe=17.04.2009 Probenbezeichnung=Wasserprobe /*... */ Anscheinend wird also nicht erkannt, dass die beiden ersten Felder als Datum bezeichnet werden sollen, sondern es wird eine neue Variable namens DEUDFDD10 "aufgemacht". Wie bekomme ich es jetzt hin, dass die ersten beiden Felder direkt als Datum eingelesen und auch so interpretiert werden? (Ich habe auch schon probiert, statt DEUDFDD10 ddmmyy10 zu benutzen - mit demselben Ergebnis) Wäre klasse, wenn Ihr mir auf die Sprünge helfen könntet (auch, falls es wieder so ein dämlicher Anfängerfehler sein sollte).

Beispielcode 12 September, 2011-09:22 HansKneilmann ohne Beispielcode ist es sehr mühselig sich vorzustellen was falsch läuft... Und was sehr mühselig ist, wird oft vermieden... Man muss sich ja nicht quälen, gell? Also: Erst Beispielcode, dann Hilfe. Gruß Hans Kneilmann, Schäfer Shop GmbH (SSI) Hallo Hans, ich wollte Hallo Hans, 12 September, 2011-10:26 L ich wollte ursprünglich meinen Einlesecode auf das nötigste kürzen, um den Beitrag lesbarer zu halten (dafür, dass es den Anschein hatte, als würde ich nur einzelne Befehle posten, bitte ich um Entschuldigung). Tatsächlich steht auch nicht viel mehr drin (außer, dass die INPUT-Zeile recht lang ist): DATA Peaks; INFILE 'Messdaten-Proben.txt' DLM='09'x DSD MISSOVER TERMSTR=CRLF FIRSTOBS=133 LINESIZE=1024; INPUT DatumMess DatumProbe Probenbezeichnung $ Messgefaess $ Polarisation $ Schrittweite Bemerkungen $ AnzPeaks Grundlinie Imax1 nu1 FWHM1 Imax2 nu2 FWHM2 Imax3 nu3 FWHM3 Imax4 nu4 FWHM4 Imax5 nu5 FWHM5 Imax6 nu6 FWHM6 Imax7 nu7 FWHM7 ImaxOHstICE nuohstice FWHMOHstICE ImaxOHstLIQ nuohstliq FWHMOHstLIQ ImaxDB nudb FWHMDB Ort $ AnzSchoepf RefIntNr RefIntOrdNr AnzPrfuerRef RefInt; RUN; Zwei der einzulesenden Datenzeilen sehen so aus: 22.04.2009 17.04.2009 Wasserprobe-#1.dat grschale ssp 4 "Kommentar" 3 1.59E-06 5.70E-06 2846 20 5.61E-06 2870 20 7.10E-06 2942 28 6.04E-06 3462 228 1.94E-05 3706 36 NOK -1 2 4.52E-04 22.04.2009 17.04.2009 Wasserprobe-#2.dat grschale ssp 4 s.o. 3 4.71E-07 1.27E-05 2854 16 1.40E-05 2874 24 1.25E-05 2950 36? 3514 256 8.20E-06 3718 36 NOK 7 2 4.52E-04 Das Problem, das ich noch zu "erschlagen" habe, ist, SAS klar zu machen, dass es auch als Datum zu interpretieren und zu verarbeiten ist.

Herzlichen Dank schonmal im Voraus für die Hilfe! Fehler im Informat ich würde sagen, dass Dein Code in dieser Zeile falsch ist: 12 September, 2011-12:29 HansKneilmann So wie Du es geschrieben hast ist DEUDFDD10 eine Variable (Spalte) und kein Format. Eine Variable kann es eigenlich nicht sein, denn Du hast sie nirgends eingelesen oder erzeugt und deshalb kommt im LOG: NOTE: Variable DEUDFDD10 is uninitialized. Ausserdem taucht DEUDFDD10 doppelt auf, was auch geben Variable und für Format spricht. Wenn es ein Format sein sollte, dann muß es so aussehen:.. (Der Punkt am Ende von DEUDFDD10 ist der Unterschied...) Aber dieses Format muß bekannt sein, entweder ist es ein Standard-Format (ich kenne es nicht) oder Du hast bzw. man hat es irgendwo vorher definiert. Wenn es nicht bekannt ist kommt im Log der Fehler ERROR 48-59: The informat DEUDFDD was not found or could not be loaded. Gruß Hans Kneilmann, Schäfer Shop GmbH (SSI) P.S.: Wenn es das passende Datums-Format nicht gibt hilft immer: Als Char-String einlesen, den String umbauen und dann ins date-format umwandeln Informat ANYDTDTE32. 12 September, 2011-13:23 JanHeuer DEUDFDD10. kenn ich auch nicht. Es müsste aber ANYDTDTE32. funktionieren. Schöne Grüße Jan

Hallo Hans, hallo Hallo Hans, hallo Jan, 12 September, 2011-16:00 L Herzlichen Dank! Jetzt läuft's. Das grundlegende Problem war erstmal der Punkt hinter der Formatangabe. Die Bezeichnung DEUDFDD10 wurde danach tatsächlich nicht erkannt. Die Bezeichnung hatte ich aus einer Dokumentation auf de.saswiki.org herausgelesen. Zum Ziel gekommen bin ich dann mit DDMMYY10. ANYDTDE32 habe ich danach nicht mehr probiert bzw. probieren müssen. Ich werde mir aber merken, dass sie existiert. Danke schön!