Änderung der Ordnung der Variablen in den SAS Datensatz

Ähnliche Dokumente
Spalten aufsummieren?!

Mehrere Datensätze zu einem Datensatz zusammenführen

Wie kann ich die Ausgabe als Excel speichern?

Merge mit nicht eindeutigen by-variablen

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

Jede Kombination von 7 Spalten erzeugen

QMF Tabelle Q.OBJECT_DATA in DB2

Kreuztabelle als Data-Set so wie aus proc tabulate

Ansprechen einer Anzahl von Variablen über einen Schleifendurchlauf

zusammenfassen von Text variablenin einer Variable bei unterschiedlicher Variablenanzahl

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

Alter berechnen mit Base SAS

Umbenennung von Spaltennamen über Schleife(n)

Berechnung der Arbeitstage

Zeilen in SAS-Datensatz einfügen

Zeichen abscheiden???

Dateien trennen und zusammenfügen

Import von Text-Dateien. Einzelne Wörter einlesen.

Berechnung der Dauer eines SAS Makros?

Allman-Einrückungsstil versus 1TBS bei SAS-Base-Programmen

Zugriff aus Oracle via Proc SQL: Performanceprobleme

Dynamisch Makros aufrufen

Formatierung beim Einlesen

Ermittlung der übereinstimmenden Variablen (-Namen) zweier Datasets

rechtsbündige Leerzeichen mit einlesen im Datastep

Daten aus SPSS-18 Proc Format...

SUBSTRING - wo liegt mein Fehler?

Hilfe bei Programmierung mit SAS

Einlesen von Textdateien mit sehr langen Zeilen

SAS BASE LOG Fragen. Antwort, Teil 1

IMPORT / EXPORT Access

viele ähnliche Datensätze automatisch einlesen

Vollständigen Code. News Artikel Foren Projekte Links Über Redscope. Join List Random Previous Next

Auslesen von SAS Systeminformationen über die aktuelle Log- Ausgabe

Exportieren in excel sheets

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

News Artikel Foren Projekte Links Über Redscope

Kalenderfrage zu Ostern

ODS RTF Titel in Spalten linksbündig darstellen

EG 4.2: Pfade zu verlinkten SAS-Files als relative Pfade speichern!?

Laufzeitoptimierung bei der Verknüpfung großer Datenmengen Ein Vergleich zwischen MERGE und JOIN

Fragen zu Table of Content erstellung

Zeit-Macro-Variablen, passend zu einem Tag

2 Index zur Steigerung der Abfrageperformance

Wie überprüfen, ob eine Datei existiert?

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

Achsenbeschriftung um 90 drehen

Möglichkeiten der SAS Software für die Analyse großer Datentabellen

Dateneingabe und Transformation Übersicht

Performance von SAS Anwendungen optimieren!?

NICHT TRIVIAL: MAKROVARIABLEN - GLOBAL ODER LOKAL

Anhang zur Frage Data statement und Proc Statement

Failed to transcode data from U_UTF8_CE to U_LATIN9_CE?!

DB2 for z/os. Musterlösungen zu den Übungen

Macro erzeugt Dateifilter

spezielle Summen bilden und proc corr

Datenbank und Tabelle mit SQL erstellen

Excel sheet input / Zufallsgenerator/ Excel sheet output

SAS Daten per Remote SUBMITE vom Großrechner selektieren,

Erzeugung und Veränderung von Tabellen

Neuer Ansatz zur Einheiten-Konvertierung von Labordaten bei klinischen Studien

ids-system GmbH Tipp #3 Leer-Strings in SQL oder die Frage nach CHAR oder VARCHAR

Überblick über die Features des SAS DS2

Oracle 9i Einführung Performance Tuning

Etiketten-Druck mit Quick Report Design

Vergleich verschiedener Möglichkeiten des Table-Lookups für größere Tabellen

Datensatz aus Datensatz erzeugen

6. Sichten, Integrität und Zugriffskontrolle. Vorlesung "Informa=onssysteme" Sommersemester 2015

Bibliografische Informationen digitalisiert durch

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

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

SQL,Teil 2: SELECT. W. Spiegel. Übersicht SELECT. Mehrfache Werte vermeiden: SELECT DISTINCT. Ausgabe ordnen: ORDER BY. Projektion.

Oracle 10g Einführung

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

Es geht also im die SQL Data Manipulation Language.

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Schöne neue Welt. So können Sie fehlende SAS-Funktionalitäten mit PROC FCMP nachrüsten. SAS Treff 13. Juni 2013

THEMA: SAS FÜR SCHNELLE PERFORMANCEFALLEN ERFOLGREICH UMGEHEN" THOMAS WENDE

Tipps & Tricks: Umkodieren von ICD-9-Daten Daten zu ICD-10 in SAS mittels PROC SQL

Abfragen (Queries, Subqueries)

Perl Regular Expressions in Base SAS

PROC GCHART HBAR Zeilenumbruch in Achsenbeschriftung

Datenbanken SQL. Insert, Update, Delete, Drop. Krebs

Neue Features Oracle Database 12.2 Wann denn endlich?

ids-system GmbH Tipp #5 STRING_UNITS ab DB FP 4

SASGraphs2PDF. Erstellung einer PDF Datei aus SAS Graphiken mit Hilfe von ODS PDF

Globale Statistiken im Oracle Data Warehhouse

Quantile selbst festlegen

Archivieren und Komprimieren, Globs

Options- und Freitext-Modul Update-Anleitung

Marcus Throll, Oliver Bartosch. Einstieg in SQL. Verstehen, einsetzen, nachschlagen. Galileo Press

THEMA: SAS STORED PROCESSES ALS WEB-/REST-SERVICE AUFRUFEN" BRUNO MÜLLER

Datenbank Grundlagen. Performanceuntersuchungen

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

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

DB2 for z/os. Übungen zur Schulung

Hands-on für UI5-Anwendung auf HANA

Archivieren und Komprimieren, Globs

Tücken bei der Erstellung von Zufallszahlen mit RANUNI

Transkript:

News Artikel Foren Projekte Links Über Redscope Join List Random Previous Next Startseite Foren Allgemeine Fragen zu SAS Änderung der Ordnung der Variablen in den SAS Datensatz 12 July, 2006-13:35 schmitti Ich möchte z.b. die Variablen aus dem SAS Datensatz in einer bestimmten Ordnung erscheinen lassen, und nicht in die manchmal ziemlich unübersichtlichen Ordnung, in der sie in dem ursprünglichen Datensatz enthalten sind. Gibt es eine Prozedur in SAS die die Namen der Variablen nach Wunsch permutieren kann? Oder einige Ideen dazu? Vielen Dank für eventuelle Beiträge, Raluca Ilinca Schmitt Foren: Allgemeine Fragen zu SAS Lösung gibt es schon 12 July, 2006-13:50 HansKneilmann Die Lösung versteckt sich unter redscope.org» Foren» ETL & Base SAS» Inhalt einer Macro- Variable sortieren, also hier Gruß Hans Kneilmann, Schäfer Shop GmbH (SSI) mit Length oder Retain Length (Herrn Kneilmann meint: eher Retain) vor die Set-Anweisung schreiben: data test1 /* Reihenfolge in Test1: a, b, c */ a=1 b=2 c=3 data test2 /* Reihenfolge in Test2: c, b, a */ length c b a 8 set test1 12 July, 2006-14:16 AndreasMangold Danke für die einfache Lösung 13 July, 2006-07:35 schmitti Ich wollte tatsächlich einfach nur die Reihenfolge günstig ändern und die Lösung passt und ist einfacher als meine, wo ich zuerst die Namen der Variablen entsprechend der gewünschten Reihenfolge umkodiert (c=m1, b=m2,a=m3 in ihrem Beispiel), den Datensatz transponiert, nach _NAME_ sortiert und anschliessend zurücktransponiert habe. Ich fand das alles sehr

umständlich und ich hatte erwartet, dass es etwas sehr schnell und einfach dafür gibt. Vielen Dank Dipl. Math.-Stat. Raluca Ilinca Schmitt Phd Student Uni Dortmund Mit Retain ist es noch einfacher 16 July, 2006-21:37 AndreasMangold Bitte schön, gern geschehen. Tatsächlich habe ich mich mittlerweile eines Besseren belehren lassen und empfehle, statt LENGTH RETAIN zu verwenden, weil man dann die Variablentypen nicht angeben muss, also so: data test1 /* Reihenfolge in Test1: a, b, c */ a=1 b=2 c=3 data test2 /* Reihenfolge in Test2: c, b, a */ retain c b a set test1 Warum muss man dazu die Daten sequentiell durchgehen? 25 July, 2006-10:22 Jobst Heitzig Mir ist hier schon immer unangenehm aufgestossen, dass man für die Änderung der Reihenfolge der Spaltenanzeige die ganze Datei sequentiell durchgehen muss. Die Reihenfolge ist ja lediglich im Kopf der Datei gespeichert und stimmt ja nicht mit der internen Anordnung der Daten im Datensatz überein. Folglich sollte die Änderung der Reihenfolge doch eigentlich so schnell sein wie Änderungen des Formats oder der Etiketten, etwa über proc datasets. Hat jemand eine Idee, wie das gehen könnte? Da helfen vielleicht Views 26 July, 2006-10:39 StephanFrenzel data mylib.a a = 1 b = 'zwei' data mylib.b / view = mylib.b retain b a set a... legt einen View an, der die Spalten sortiert anzeigt. In diesem Fall werden die Daten

nicht komplett durchgenudelt. Nachteil ist, das die Bibliothek MYLIB immer unter genau diesem Namen allokiert sein muß, sonst kann der View nicht verarbeitet werden. Gruß SF nun ja... 31 July, 2006-16:36 Jobst Heitzig Das ist sicher meist performanter als jedesmal die ganze Datei durchzunudeln (ggf. inkl. Ent- und Neukomprimieren!). In diesem Zusammenhang frage ich mich, ob eigentlich derartige Views tatsächlich keinen wesentliche Verarbeitungszeit benötigen, oder ob nicht z.b. das Multithreading o.ä. dadurch behindert wird. Hat jemand dazu bereits Erfahrungen gemacht? Im übrigen meine ich nach wie vor, es müsste eine Möglichkeit geben, die im SAS- Dateikopf gespeicherte logische Spaltenreihenfolge ohne sequentielles Durchgehen der Daten zu verändern. Formate und Labels kann man ja auch mit Proc Datasets ändern! append statt durchnudeln 2 August, 2006-12:01 HansKneilmann Hallo, man kann das "durchnudeln" beim "reorder" mit einem proc append vermeiden, das sieht etwa so aus: data neu /* Variante 1 */ retain %varsort(alt) set alt(obs=0) proc append base=neu data=alt Aber gewonnen hat man nicht viel dabei, denn die Laufzeit ist praktisch die gleiche wie beim klassichen Data-Step, also bei: data neu /* Variante 2 */ retain %varsort(alt) set alt In Zahlen: Test-Data-Set Observations: 14.814.282 Variables: 88

Indexes: 0 Obs Length: 396 Deleted Obs: 0 Compressed: CHAR Sorted: YES File Size: 5.061.361.664 Laufzeiten Variante 1 reorder und proc append (in 'mm:ss'): 04:37.40 Variante 2 reorder und data step (in 'mm:ss'): 04:45.01 Variante 3 data step ohne reorder (in 'mm:ss'): 04:26.45 Die Variante 3 ist der ganz normale Umkopier-Data-Step ohne retain oder sonst was und íst zum Vergleich dabei! Das ganze habe ich nachts (21:10-22:08) im Batch bei ansonsten "leerer" Maschine getestet (Sun V880, CPU=4, 900MHz, RAM=8GB, Solaris 8). Nebenbei habe ich auch mit bufsize bzw. bufno experimentiert. Test-Data-Set wie oben,also Observations: 14.814.282 Variables: 88 Indexes: 0 Obs Length: 396 Deleted Obs: 0 Compressed: CHAR Sorted: YES File Size: 5.061.361.664 Laufzeiten (Code: Data Step, ohne retain, nur bufsize/buno gesetzt): Variante 4 bufsize-098304-test (in 'mm:ss'): 07:14.16 Variante 5 bufsize-196608-test (in 'mm:ss'): 07:05.26 Variante 6 bufsize-098304-bufno-10-test (in 'mm:ss'): 07:22.01 Variante 7 bufsize-098304-bufno-20-test (in 'mm:ss'): 07:16.57 Variante 8 bufsize-196608-bufno-10-test (in 'mm:ss'): 07:14.49 Variante 9 bufsize-196608-bufno-20-test (in 'mm:ss'): 07:17.52 Info: bufsize-098304 entspricht 4*default mit default=24576 bufsize-196608 entspricht 8*default mit default=24576 Das Ergebnis finde ich sehr überraschend???!!! Hat jemand ähnliche Erfahrungen gemacht? Hans Kneilmann, Schäfer Shop GmbH (SSI) P.S. Das Thema bufsize/bufno habe ich jetzt als eigenen Forums-Beitrag unter Zeit-Optimierung mit bufsize/bufno (also hier), das passt es m.e. besser! Append besser bei Kompression! 8 August, 2006-09:54 Jobst Heitzig

Append zu verwenden ist eine gute Idee, denn wenn die Daten komprimiert sind und man die selbe Kompression bei der Datei NEU verwendet, dürfte die Append-Variante viel schneller laufen als die Data-Step-Variante, denn erstere müsste die Sätze im komprimierten Zustand herüberkopieren, während letztere erst ent- und dann wieder neu komprimieren müsste. Append nicht schneller wenn Daten komprimiert 8 August, 2006-10:16 HansKneilmann Leider sind meine Test-Daten mit Kompression (siehe oben der Auszug aus der proc contents-ausgabe) und das append ist trotzdem nicht (wesentlich) schneller als der normale data step. Siehe hier. Hans Kneilmann, Schäfer Shop GmbH (SSI) Alternative: Proc SQL Hallo Fr. Schmitt, Hallo Forum, 20 July, 2006-15:06 awindisch ich hätte noch folgenden Vorschlag im Angebot: data test1 /* Reihenfolge in Test1: a, b, c */ a=1 b=2 c=3 proc sql /* Reihenfolge in Test2: c, b, a */ create table test2 as select c, b, a from test1 quit Es wäre auch möglich, gleich wieder in die table test1 zu schreiben. Also so: proc sql /* Reihenfolge in Test1: c, b, a */ create table test1 as select c, b, a from test1 quit Soweit ich Proc SQL kenne, läuft das auch sehr performant und man kann weitere Veränderungen vornehmen z.b. Formate zuweisen usw.

Viele Grüße aus Coburg! Andreas Windisch HUK-COBURG-Bausparkasse AG