Speicher von SAS Daten (einschließlich Tabellenstruktur) in einer einzigen flachen Datei

StackOverflow https://stackoverflow.com/questions/119929

  •  02-07-2019
  •  | 
  •  

Frage

Ich brauche SAS Datentabellen in flache Dateien zu konvertieren (oder „ASCII-Dateien“, wie sie einmal genannt wurden, wie in binären Dateien im Gegensatz). Und nur eine flache Datei für jedes Original SAS-Tabelle. Die schwierige Sache ist, dass ich die flache Datei auch einige strukturellen Informationen der ursprünglichen SAS-Tabelle enthalten soll, im Einzelnen:

  • Variable / Spaltenname
  • Variable / Spalte Label
  • Variable / Spalte Typ
  • Variable / Spalte Länge
  • Variable / Spalte Format
  • Variable / Spalte informat

Weitere Informationen:

  • Ich will nur kleine Daten (<100 obs) konvertieren müssen.
  • Performance ist kein Problem (in Grenzen).
  • Die flache Datei sollte für Neuerstellung der ursprünglichen SAS Tabelle, die eine Basis bilden, ich brauche, um die Datei direkt als Tabelle in DATA oder PROC Schritte nicht verwendet werden können.

Die Standard-SAS-Tabellen, Transportdateien, XPORT Dateien, etc. sind alle binären Format-Dateien und das Standard-XML-Tabellenformat in SAS und CSV-Dateien nicht Tabellenstruktur erhalten. So offensichtlich diese Optionen nicht helfen.

Was ist meine beste Option?

War es hilfreich?

Lösung

Ich bin nicht bekannt, dass einfache Lösungen.

Möglicherweise:

  1. Verwenden Sie PROC den Export zu produzieren CSV mit den Daten in ihm-Datei.
  2. Verwenden Sie PROC Datensätze mit ODS einen Datensatz mit den Namen zu erzeugen, Typen, etc.
  3. Erstellen Sie eine andere CSV-Datei zu diesem Datensatz.

Jetzt haben Sie Ihre ASCII Beschreibung der Tabelle (verteilt auf zwei CSV-Dateien) bekommen. den Prozess umzukehren wäre komplizierter. Im Grunde müßten Sie in der Beschreibung Datensatz lesen, dann verwenden CALL-SYMPUT in einer Schleife eine Reihe von Makrovariablen mit den Informationen in ihnen zu schaffen, dann Makrovariablen verwenden, um einen PROC IMPORT für die CSV-Datei zu erstellen ...

Andere Tipps

  1. Sie den Code Erstellen Sie die Tabelle zu exportieren, um Text (dies einfach ist, nur Google oder schauen Sie auf 'The Little SAS Book', wenn Sie eine Kopie haben).

  2. Dann die 'Meta' anhängen Informationen von sashelp.vcolumn, das ist, wo sas Informationen (Metadaten) über sas Datensätze speichert. Es ist ein sas Tisch selbst, so könnten Sie eine proc SQL Union-Operation zu tun, um es mit den tatsächlichen Spalten zu verbinden, die diese Tabelle wird (obwohl Sie ein transponierte Bedienungs tun müssen, weil die Metadaten zu den Spalten in Zeilen, Spalten nicht ).

Sie sind nicht ganz spezifisch über das Sein, wie Sie die Meta-Daten in der Textdatei sehen möchten, so das ist so weit wie ich gehen kann.

proc SQL Syntax beschreiben könnte praktisch sein, den Metadaten Teil zu bekommen, einschließlich Längen, Typen, Formate, Indizes etc ...

Code:

proc sql;
describe table sashelp.class;
quit;

Log:

NOTE: SQL table SASHELP.CLASS was created like:

create table SASHELP.CLASS( bufsize=4096 )
  (
   Name char(8),
   Sex char(1),
   Age num,
   Height num,
   Weight num
  );

Mit SAS 9.2 können Sie eine XML-Datei aus einem Datensatz erstellen und die XML enthält Variable / Spalten-Metadaten, wie Format, Label, etc ... Siehe den Abschnitt des SAS 9.2 XML LIBNAME Motors: Benutzerhandbuch Titel " Mit Hilfe der XML Engine Transport SAS Data Sets für Betriebsumgebungen“. Ein Link zu ist es hier:

http://support.sas .com / Dokumentation / CDL / en / engxml / 61740 / HTML / default / a002594382.htm

Hier ist ein Abschnitt des Codes aus dem Handbuch, das die XML92 libname Motor und PROC COPY zeigt unter Verwendung der XML zu erstellen:

libname myfiles 'SAS-library';
libname trans xml92 'XML-document' xmltype=export;
proc copy in=myfiles out=trans;
   select class;
run;

In SAS 9.1.3 können Sie eine benutzerdefinierte tagset erstellen müssen, um die gleiche Operation zu erhalten. SAS Technical Support (support@sas.com) kann in der Lage sein, etwas Hilfe anbieten zu können.

BTW - Sie haben nicht gesagt, warum diese müssen tun. In diesem Fall gibt es keinen guten Grund (möglicherweise gibt es einen zwingenden Grund, wie jemand mit Macht sagen: 'es tun, oder gefeuert werden', aber es gibt keine gut Grund).

würde ich die Idee der Zusammenlegung der Metadaten und Daten in jeder Datei geben, es sei denn es eine unglaublich starke Grund, dies zu tun. Gehen Sie mit den Metadaten für Datensatz A in eine Datei exportieren genannt metadata_A; dies wird in gepaarten Dateien führen. Jeder sucht diese Dateien in einem ein Datenbankprogramm oder statistisches Programm zu verwenden, würde eine klar gekennzeichnete Metadatendatei mit zu arbeiten.

Wenn Sie nur die Daten in SAS verwenden gehen, dann können Sie nur PROC COPY verwenden, um Transport-Dateien zu machen:

http://www.usc.edu/isd/doc/ Statistiken / sas / sastransport /

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top