PROC DATASETS

Aus SAS-Wiki
Wechseln zu: Navigation, Suche

PROC DATASETS ist eine im Modul Base SAS enthaltene SAS-Prozedur. Sie wird benutzt um SAS-Dateien zu verwalten und ist dabei in vielen Fällen sehr effizient. Mit der Prozedur hat man folgende Möglichkeiten:

  • Dateien von einer Bibliothek zu einer anderen kopieren
  • Dateien umbenennen, löschen oder reparieren
  • Dateien einer Bibliothek auflisten
  • Eigenschaften einer Datei auflisten
  • Passwörter für Dateien bearbeiten
  • Tabellen anhängen
  • Eigenschaften und Variablen von Tabellen verändern
  • Erstellen und löschen von Indizes

In PROC DATASETS sind mehrere RUN-Groups möglich, wobei die Prozedur stets weiter ausgeführt wird. Eine RUN-Group besteht aus mehreren Anweisungen und endet mit einer RUN-Anweisung. Die Prozedur endet statt mit einem RUN mit einem RUN CANCEL, QUIT oder durch einen neuen Datenschritt/ eine neue Prozedur.

Die Prozedur DATASETS

Syntax

<LIBNAME libref  ‘SAS-data-library’;>
PROC DATASETS <option-1 ...option-n>;
  DATASETS-Anweisungen;
QUIT;

Wenn man vor der DATASETS-Prozedur keine Eingabe-Bibliothek bestimmt, wir die WORK-Bibliothek verwendet.

Optionen der PROC DATASETS Anweisung

Option Arbeitsschritt
ALTER=Passwort Ermöglicht den Zugang zu passwortgeschützten Dateien in der Bibliothek
DETAILS/NODETAILS Fügt dem Log Informationen über die Anzahl der Beobachtungen, Anzahl der Variablen und Anzahl der Indizes und die Dateien-Labels bei
FORCE Erzwingt die Ausführung der RUN-Gruppe, auch wenn diese einen Fehler enthält, oder erzwingt eine beigefügte Operation
HIST|REVERT|Integer Schränkt die Verarbeitung von Dateigeneration ein
KILL Löscht SAS-Dateien
LIBRARY=input Bestimmt die Eingabe/Ausgabe-Bibliothek
MEMTYPE=Dateityp Beschränkt die Verarbeitung auf bestimmte Typen von SAS-Dateien
NOLIST Stellt den Druck des Verzeichnisses ab
NOWARN Stellt die Fehlerverarbeitung ab
PW=Passwort Liefert Lese-, Schreib oder Änderungs- Zugriff
READ=Lese-Passwort Liefert Lesezugriff

Anweisungen in der Prozedur DATASETS

APPEND

APPEND BASE=<input.>SAS-data-set 
      <DATA=<input.>SAS-data-set> 
      <FORCE> 
      <NOWARN>;

Die APPEND-Anweisung fügt die Beobachtungen einer Datei an das Ende einer anderen Datei.
Anders als bei der SET-Anweisung, werden bei der APPEND-Anweisung nur die Beobachtungen eingelesen, die angehängt werden. Mit der BASE= -Anweisung bestimmt man die Datei, an die eine andere angehängt werden soll. Mit der DATA= -Anweisung bestimmt man die Datei, die an die BASE-Datei angehängt wird. Enthalten die beiden Dateien nicht die gleichen Variablennamen, -Typen oder –Längen, benutzt man die FORCE-Option um die Verknüpfung zu erzwingen.
Beispiel:

PROC DATASETS;
    APPEND BASE= membr_a
	    DATA = membr_b (WHERE=(year=2000));
    RUN;


CHANGE

CHANGE old-name-1=new-name-1 
     <...old-name-n=new-name-n > <options>;

Mit der CHANGE-Anweisung benennt man eine oder mehrere Dateien innerhalb einer Bibliothek um.


CONTENTS

CONTENTS DATA=SAS-file-specification <option-1 <...option-n>>; 

Die CONTENTS-Anweisung macht das gleiche wie die CONTENTS-Prozedur. Sie beschreibt den Inhalt von Dateien und druckt das Verzeichnis der Bibliothek.
Der Unterschied zwischen der CONTENTS-Anweisung und der CONTENTS-Prozedur ist die Standardeinstellung für den Libref in der DATA=-Option. Für PROC CONTENTS ist die Standardeinstellung entweder WORK oder USER, für die CONTENTS-Anweisung ist der Standard-Libref die Eingabe-Bibliothek der Prozedur.


COPY

COPY OUT=libref-1 
      IN=libref-2 <options>;

Mit der COPY-Anweisung kopiert man SAS-Dateien aus einer Bibliothek in eine andere. Mit der OUT= -Anweisung gibt man die Bibliothek an, in die die Dateien kopiert werden. Mit der IN=-Anweisung gibt man die Bibliothek an, aus der die Dateien kopiert werden.
Um die Anzahl der Dateien einzugrenzen benutzt man die SELECT-Option. Um eine Datei von einer Bibliothek in eine andere zu verschieben und dann die Originaldatei zu löschen, benutzt man die MOVE-Option.
Folgendes Beispiel verschiebt zwei Dateien von der einen Bibliothek in die andere.

LIBNAME lib1 ‘SAS-data-library’;
LIBNAME lib2 ‘SAS-data-library’;
PROC DATASETS;
    COPY IN=lib1 
        OUT=lib2 MOVE;
    SELECT member1 member2;
    RUN;


SAVE

SAVE SAS-file-1 <...SAS-file-n>;

Diese Anweisung speichert diejenigen Dateien, die im SAVE-statement aufgelistet sind, und löscht dabei alle anderen Dateien aus der Bibliothek.


DELETE und KILL

DELETE SAS-file-1 <...SAS-file-n>;

Mit der KILL-Option löscht man alle Dateien der Bibliothek. Mit der DELETE-Anweisung kann man bestimmte Dateien aus einer Bibliothek löschen.
Beispiel zu KILL:

LIBNAME input ‘SAS-data-library’;
PROC DATASETS LIBRARY=input KILL;
RUN;


MODIFY

MODIFY SAS-file <(option-1 <...option-n>)> 

Die MODIFY-Anweisung wird benutzt, um Eigenschaften der SAS-Datei oder der Variablen zu ändern. Damit kann man Formate, Informate oder Labels bestimmen, Variablen umbenennen und Indizes erstellen und löschen. Dabei arbeitet MODIFY nur auf einer Datei gleichzeitig.
Da während der Ausführung weder Beobachtungen eingelesen oder geschrieben werden, eignet sich diese Anweisung gut, um bei einer existierenden Datei Labels hinzuzufügen, Variablen umzubenennen, oder Formate zu ändern.

Das folgende Beispiel modifiziert die Tabelle "Einkommen": fügt ein Tabellen-Label hinzu, benennt die Variable"Alt" zu "Neu", fügt ein Label zur Variable hinzu und legt ein Format für "Einkommen" fest.

LIBNAME input ‘SAS-data-library’;
PROC DATASETS LIBRARY=input;
    MODIFY Einkommen (LABEL=’Haushaltseinkommen’);
         RENAME Alt=Neu;
         LABEL Neu=’NEU’;
         FORMAT Einkommen comma11.2;
    RUN;


Folgendes Programm macht das gleiche, jedoch ist es weniger effizient, denn es werden alle Beobachtungen während der Ausführung eingelesen und geschrieben.

LIBNAME input ‘SAS-data-library’;
DATA input.Einkommen (LABEL=’Haushaltseinkommen’);
   SET input.Einkommen;
   RENAME Alt=Neu;
   LABEL Neu=’NEU’;
   FORMAT Einkommen comma11.2;
RUN;


Beispiel

Die folgende DATASETS-Prozedur enthält folgende Schritte:

  1. kopiert Die Tabellen "Baseball", "class", "classfit" und "shoes" von der Sashelp-Bibliothek in die Sasuser-Bibliothek
  2. listet den Inhalt der Sasuser-Bibliothek auf
  3. löscht die Baseball-Tabelle aus der Sasuser-Bibliothek
  4. Ändert den Namen "Shoes" zu "Schuhe"
  5. fügt zur Tabelle "class" alle Beobachtungen der "classfit"-Tabelle hinzu, bei denen die Variable "Age"=14 ist
  6. benennt die Variable "Product" um
proc datasets memtype=data;
  copy in=sashelp 
       out=test_bib;
  Select Baseball class classfit shoes;
  run;
proc datasets library=sasuser memtype=data details;
  delete Baseball;
  change shoes=Schuhe;
  append Base=class
         DATA=classfit (Where=(Age=14)) force;
  modify Schuhe;
         rename Product=Produkt;
  run;
quit;


Weblinks

PROC DATASETS bei support.sas.com (englisch)