SUBSTRING - wo liegt mein Fehler?

Ähnliche Dokumente
Einlesen von Textdateien mit sehr langen Zeilen

Umbenennung von Spaltennamen über Schleife(n)

Zeilen in SAS-Datensatz einfügen

Anhang zur Frage Data statement und Proc Statement

IMPORT / EXPORT Access

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

QMF Tabelle Q.OBJECT_DATA in DB2

Hallo Jessi, wenn ich das. DATA aufg3_b; vari='<.0001'; IF &wil_two_test. le vari THEN pwert=0.0001;

Berechnung der Arbeitstage

Auslesen von SAS Systeminformationen über die aktuelle Log- Ausgabe

rechtsbündige Leerzeichen mit einlesen im Datastep

Wie überprüfen, ob eine Datei existiert?

Alter berechnen mit Base SAS

Dynamisch Makros aufrufen

Wie kann ich die Ausgabe als Excel speichern?

viele ähnliche Datensätze automatisch einlesen

Exportieren in excel sheets

PROC GCHART HBAR Zeilenumbruch in Achsenbeschriftung

Kreuztabelle als Data-Set so wie aus proc tabulate

News Artikel Foren Projekte Links Über Redscope

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

Access 2010 Programmierung Import und Export nach Excel

Excel sheet input / Zufallsgenerator/ Excel sheet output

Institut für Computational Science Prof. Dr. H. Hinterberger. Praxismodul 1. Einführung in die Programmierung Erste Programme

Zur drittletzten Zeile scrollen

Schlüsselfelder für Grundbuchdaten. Spezifikation für GB-Softwarehersteller

Failed to transcode data from U_UTF8_CE to U_LATIN9_CE?!

Zugriff aus Oracle via Proc SQL: Performanceprobleme

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

Überprüfung auf Normalverteilung und anschließend Test auf Signifikanz

Übungen für Woche 10

Übersicht Shell-Scripten

Ermittlung der übereinstimmenden Variablen (-Namen) zweier Datasets

SAS Daten per Remote SUBMITE vom Großrechner selektieren,

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

Skripte. Beispiel. M. Fyta Computergrundlagen 73/93

Shell-Scripting Linux-Kurs der Unix-AG

Shell-Scripting Linux-Kurs der Unix-AG

Programmieren I + II Regeln der Code-Formatierung

Einleitung Erste Abfrage erstellen...2

Squeak verwenden. Neues Projekt starten. Werkzeuge. Einführung in die objektorientierte Programmierung

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Übersicht. Einführung in Perl Datenstrukturen I. Datentypen Übersicht (1) Kernbegriffe. Kernbegriffe. Einführung der Datentypen.

STATA II: Daten- und Analysevorbereitung (Teil 1)

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

Access und die andern (Office) Programme. Armin Hess

Visual Basic / EXCEL / Makroprogrammierung Unterrichtsreihe von Herrn Selbach

HEUTE. Unterschiede Pseudocode / Programmcode. Rundung und modulo (Tafel) Pseudocode: findprimeswithdifference. Strings in JAVA.

Achsenbeschriftung um 90 drehen

Sub Rechnungsnummer() Range("A1") = Range("A1") + 1 End Sub

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

10 Block 10: Verwendung von Modulen in Perl

Programmierung eines Besucherzählers mit Flash

Klausur Fachprüfung Wirtschaftsinformatik. Name:

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Öffnen einer Datei. Programm mit einer Fehlermeldung beendet. open( IN, "datei.txt" ) or die( "open-fail: $!" );

WiMa-Praktikum 1. Woche 8

R-Wörterbuch Ein Anfang... ein Klick auf einen Begriff führt, sofern vorhanden, zu dessen Erklärung.

Kommandozeileneingabe. Einführung in Perl Kommandozeileneingabe etc. Kommandozeileneingabe Optionen. Kommandozeileneingabe Bsp (1)

Arrays im DATA-Step - wann und warum?

Jahrgang: Jahrgang 1. Thema: Systementwicklung einer Webapplikation - Geheimnachrichten-Generator

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

Linux Prinzipien und Programmierung

Excel Funktionen durch eigene Funktionen erweitern.

OLConnector Programmierung

Schreibweise in IGOR: 6.02E-23

Einführung in die Programmierung 1

Der SAS DataStep und die Prozedur SQL Cellent Finance Solutions GmbH Seite: 1

entweder: zeilenweise fgets() oder: zeichenweise fgetc()

2 R die Basics. Inhalt. 2.1 Ziel. 2.2 R als Taschenrechner. Markus Burkhardt

WiWi SoSe2016 Excel Grundlagen

Erste Datenbereinigung

10 Lesen und Schreiben von Dateien

THEMA: "DATENMANAGEMENT IM SAS ENTERPRISE GUIDE - SPALTEN TEILEN, STAPELN, TRANSPONIEREN EVA-MARIA KEGELMANN

FB Informatik. Fehler. Testplan

Informatik B von Adrian Neumann

Vorlesung Unix-Praktikum

4 Schleifen und Dateien

Unterlagen. CPP-Uebungen-08/

Einstieg in die Informatik mit Java

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Objektorientierte Programmierung

Übungsblatt 3: Algorithmen in Java & Grammatiken


11./ 12. April Andrea Ossig Prof. Dr. Helmut Küchenhoff

Excel VBA. Teil Zusammenfassung! Was wir können sollten! V

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Integrierte Office Anwendungen

2017/01/23 15:50 1/5 Bedienung

Kapitel. Platzhalter. Was sind Platzhalter?

GI Vektoren

WIE KANN ICH ACCESS XML FÄHIGKEITEN UNABHÄNGIG VON DER VERSION BEIBRINGEN?

Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, Uhr Bearbeitungszeit: 105 Minuten

Wertebereich und Genauigkeit der Zahlendarstellung

2. Programmierung in C

KISSsys Anleitung: Lagerkräfte aus KISSsys Modell exportieren

Transkript:

News Artikel Foren Projekte Links Über Redscope Join List Random Previous Next Startseite Foren Allgemeine Fragen zu SAS SUBSTRING - wo liegt mein Fehler? 31 July, 2012-18:11 losingdays Hallo zusammen, ich muss zwei Excel-Dateien zusammenführen, um diese statitisch auswerten zu können. Leider habe ich keine zwei Spalten mit eindeutigen IDs, sondern einer der beiden Dateien ist die benötigte Nummer hinter einer "9000000000" versteckt. Ich habe schon gelernt, dass ich dieses Problem mit der SUBSTRING-Funktion lösen kann, jedoch habe ich leider immer noch eine Fehlermeldung. Das war mein Versuch einer Formulierung: data exter; substr(transponder,9)=transponderhilfe; (Transponder: Variable mit der benötigten Nummer - ich möchte die Zahl aus dieser Variable minus 9000000000 und in eine neue Variable umschreiben...) Und das sagt die Log-Datei: HINWEIS: Variable TransponderHilfe ist nicht initialisiert. HINWEIS: Ungültiges zweites Argument für Funktion SUBSTR in Zeile 2 Spalte 5. Transponder= TransponderHilfe= _ERROR_=1 _N_=1 Kann mir jemand weiterhelfen?! Vielen vielen Dank! Foren: Allgemeine Fragen zu SAS Hallo, zum einen hast Du die Hallo, 31 July, 2012-18:26 Wolfgang Hornung zum einen hast Du die Funktion substr falsch verwendet, es muss heißen TransponderHilfe=substr(Transponder,9); In der Variante, wie Du die Funktion angewendet hast kann man in einem String Zeichen ersetzen. Die Funktion substr ist, soweit ich weiß, die einzige SAS-Funktion, die sowohl links wie auch rechts vom = stehen kann. Ich gehe weiterhin davon aus, dass die Variable Transponder nummerisch ist. Um substr anzuwenden, muss die Variable Transponder zunächst alphanummerisch

umgewandelt werden. Eine Lösung könnte wie folgt aussehen: TransponderHilfe=substr(put(Transponder,xx.),9); Wobei xx die Anzahl der Stellen der Zahlen bedeutet. Viele Grüße Wolfgang Werde es sofort ausprobieren, Werde es sofort ausprobieren, aber vielen Dank schon mal!! =) 7 August, 2012-17:54 losingdays Hallo Christine, in deinem Hallo Christine, 10 August, 2012-23:23 JanHeuer in deinem Code stimmt leider nicht nur die falsche Stellung des Substr() nicht. Um auf die Variablen in den Dateien zuzugreifen brauchst Du auch einen set Befehl. Wenn Du Character-Variablen hast, kann es gut sein, dass die unterschiedliche Längen haben. Dann muss zuerst mit einem Length Statement der benötigte Platz reserviert werden. In deinem Text hattest Du geschrieben, dass die Zahl sich hinter einem "9000000000" versteckt. In dem Code hast du dann nur von 9 Stellen gesprochen, "9000000000" hat aber 10 Stellen. Leider ist der Ausdruck "dahinter verstecken" nicht eindeutig. Es gibt zwei Möglichkeiten: 1) "90000000001234" 2) "9000001234" Für den Fall 1 sähe die Lösung so aus: /* falls beide numerisch*/ data t1_n; a = 1; Data t2_n; a = 90000000002; Data t3_n; set t1_n t2_n(in = lang); if lang then a = a - 90000000000; /* falls beides character */ Data t1_c; a = '1';

Data t2_c; a = '90000000002'; Data t3_c; Length a $ 11; set t1_c t2_c(in = lang); if lang then a = substr(a,11); Die Funktion substr() beginnt die Zählung mit 1, d. h., wenn Du alles hinter der 10 Stelle haben willst, muss das zweite Argument 11 sein. Der Fall 2 liegt ein bisschen anders. Bei der Textvariante weiß man ja nicht, wieviel Stellen man behalten will. daher empfielt sich die Umwandlung in eine Zahl, um danach genau wie bei der numerischen Variante vorzugehen. /* falls numerische Zahl */ data t1_n; a = 1; Data t2_n; a = 9000000002; Data t3_n; set t1_n t2_n(in=lang); if lang then a = a - 9000000000; /* falls beides character */ Data t1_c; a = '1'; Data t2_c; a = '9000000002'; Data t3_c; Length a $ 10; set t1_c t2_c(in = lang); if lang then do; a = left(input(a,best10.)-9000000000); end; Die Funktion Left() wandelt das Ergebenis der Berechnung "input(a,best10.)-9000000000" in einen Text um und richtet diesen links aus. Schöne Grüße Jan Hallo Wolfgang, ich danke dir 7 August, 2012-18:28 losingdays

Hallo Wolfgang, ich danke dir schon einmal herzlich für deine nette Erläuterung. Könntest du mir noch erklären, was es bedeutet, wenn eine Variable nicht initialisiert wurde? Wie macht man das? Und: Wie erstelle ich in SAS eine neue Variable, die es in meiner Ursprungsdatei noch nicht gab? Viele Grüße, Christine Initialisieren Hallo Christine, 8 August, 2012-10:05 Wolfgang Hornung vereinfacht ausgedrückt bedeutet das, dass die angesprochene Variable weder in der eingelesenen Datei existiert, noch an irgendeiner Stelle im Datastep initialisiert bzw. mit einem Wert belegt wird. Eine neue Variable kannst Du einfach durch eine Zuweisung erzeugen, z.b. so, die Variable a sei jetzt mal nicht in der "Einlesedatei": data Ausgabedatei; set Einlesedatei; a='xyz'; Vielleicht spielst Du mal mit folgenden 4 Datasteps (ohne Einlesedatei) rum, und schaust Dir Log und Ausgabedatei an: data a1; data a2; data a3; length transponder $12; data a4; length transponder $12; Viele Grüße

Wolfgang