Die Beispiele verwenden generierte Daten (Datalines) oder SASHELP.
1 Codeblock
DATA STEP
Erklärung : Diese Codeausschnitte zeigen einfache Verwendungen der OUTPUT-Anweisung. Die erste Zeile schreibt die aktuelle Beobachtung. Die zweite schreibt die Beobachtung, wenn 'deptcode' größer als 2000 ist. Die dritte schreibt die Beobachtung in den Datensatz 'markup', wenn die Variable 'phone' fehlt.
Kopiert!
/* Écrit l'observation courante dans un ensemble de données SAS spécifié dans l'instruction DATA */
output;
/* Écrit l'observation courante dans un ensemble de données SAS lorsqu'une condition spécifiée est vraie */
if deptcode gt 2000 then output;
/* Écrit une observation dans l'ensemble de données MARKUP lorsque la valeur de PHONE est manquante */
if phone=. then output markup;
1
/* Écrit l'observation courante dans un ensemble de données SAS spécifié dans l'instruction DATA */
2
OUTPUT;
3
4
/* Écrit l'observation courante dans un ensemble de données SAS lorsqu'une condition spécifiée est vraie */
5
IF deptcode gt 2000THENOUTPUT;
6
7
/* Écrit une observation dans l'ensemble de données MARKUP lorsque la valeur de PHONE est manquante */
8
IF phone=. THENOUTPUT markup;
2 Codeblock
DATA STEP Data
Erklärung : Dieses Beispiel erstellt drei Beobachtungen im Datensatz 'response' für jede Beobachtung im Datensatz 'sulfa'. Der Datensatz 'sulfa' wird zuerst mit Inline-Daten (Datalines) erstellt. Anschließend liest der DATA-Schritt 'response' jede Beobachtung von 'sulfa' und verwendet die OUTPUT-Anweisung dreimal, um drei neue Beobachtungen zu erstellen, jede mit einem anderen 'time'-Wert, der von den Variablen 'time1', 'time2' und 'time3' stammt.
Kopiert!
data sulfa;
input patient $ time1 time2 time3;
datalines;
pat1 10 20 30
pat2 15 25 35
;
run;
data response(drop=time1-time3);
set sulfa;
time=time1;
output;
time=time2;
output;
time=time3;
output;
run;
1
DATA sulfa;
2
INPUT patient $ time1 time2 time3;
3
DATALINES;
4
pat1 102030
5
pat2 152535
6
;
7
RUN;
8
9
DATA response(drop=time1-time3);
10
SET sulfa;
11
time=time1;
12
OUTPUT;
13
time=time2;
14
OUTPUT;
15
time=time3;
16
OUTPUT;
17
RUN;
3 Codeblock
DATA STEP Data
Erklärung : Dieses Beispiel zeigt, wie mehrere SAS-Datensätze ('ozone' und 'oxides') aus einer einzigen Eingabedatei erstellt werden. Eine temporäre Eingabedatei 'input_data.txt' wird zuerst erstellt. Der DATA-Schritt liest dann die Daten aus dieser Datei. Wenn die chemische Substanz 'O3' ist, wird die Beobachtung in den Datensatz 'ozone' geschrieben; andernfalls wird sie in den Datensatz 'oxides' geschrieben.
Kopiert!
data _null_;
file 'input_data.txt';
put 'London 01JAN2025 O3 25';
put 'Paris 01JAN2025 NOx 15';
put 'Berlin 01JAN2025 O3 30';
put 'Rome 01JAN2025 SO2 10';
run;
data ozone oxides;
infile 'input_data.txt';
input city $ 1-15 date date9.
chemical $ 26-27 ppm 29-30;
if chemical='O3' then output ozone;
else output oxides;
run;
1
DATA _null_;
2
file 'input_data.txt';
3
put 'London 01JAN2025 O3 25';
4
put 'Paris 01JAN2025 NOx 15';
5
put 'Berlin 01JAN2025 O3 30';
6
put 'Rome 01JAN2025 SO2 10';
7
RUN;
8
9
DATA ozone oxides;
10
INFILE'input_data.txt';
11
INPUT city $ 1-15 date date9.
12
chemical $ 26-27 ppm 29-30;
13
IF chemical='O3'THENOUTPUT ozone;
14
ELSEOUTPUT oxides;
15
RUN;
4 Codeblock
DATA STEP Data
Erklärung : Dieses Beispiel kombiniert mehrere Eingabebeobachtungen zu einer einzigen. Der Datensatz 'gadgets' wird mit Fehlerwerten erstellt. Der DATA-Schritt 'discards' liest diese Beobachtungen, summiert die Variable 'defects' in 'total' und schreibt eine einzige Beobachtung in 'discards', nachdem 10 Beobachtungen verarbeitet wurden, und stoppt dann die Verarbeitung.
Kopiert!
data gadgets;
input defects;
datalines;
1
2
3
4
5
6
7
8
9
10
11
12
;
run;
data discards;
set gadgets;
drop defects;
reps+1;
if reps=1 then total=0;
total+defects;
if reps=10 then do;
output;
stop;
end;
run;
1
DATA gadgets;
2
INPUT defects;
3
DATALINES;
4
1
5
2
6
3
7
4
8
5
9
6
10
7
11
8
12
9
13
10
14
11
15
12
16
;
17
RUN;
18
19
DATA discards;
20
SET gadgets;
21
drop defects;
22
reps+1;
23
IF reps=1THEN total=0;
24
total+defects;
25
IF reps=10THENDO;
26
OUTPUT;
27
stop;
28
END;
29
RUN;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
« Die OUTPUT-Anweisung ist einer der mächtigsten Befehle im SAS DATA-Schritt, da sie den standardmäßigen Schreibvorgang von SAS grundlegend verändert. Normalerweise schreibt SAS am Ende jeder Iteration automatisch eine Beobachtung (implizites Output). Sobald Sie jedoch eine explizite OUTPUT-Anweisung verwenden, übernehmen Sie die volle Kontrolle und die Automatik wird deaktiviert.
Um das Potenzial der OUTPUT-Anweisung voll auszuschöpfen, beachten Sie diese Best Practices:
Daten-Normalisierung: Nutzen Sie OUTPUT, um Breitformate in Langformate umzuwandeln. Indem Sie mehrere OUTPUT-Befehle innerhalb einer Iteration (z. B. nach der Zuweisung verschiedener Zeitpunkte) aufrufen, können Sie aus einer einzigen Eingabezeile mehrere Datensätze erzeugen.
Bedingtes Splitting: Kombinieren Sie OUTPUT mit IF-THEN-Logik, um Datenströme in verschiedene Ziel-Datensätze zu lenken (z. B. output ozone; vs. output oxides;). Dies ist performanter, als dieselbe Quelle mehrfach mit verschiedenen Filtern einzulesen.
Vorsicht bei der Platzierung: Denken Sie daran, dass Variablenwerte, die nach dem OUTPUT-Befehl im Code geändert werden, nicht mehr in die gerade geschriebene Beobachtung einfließen. Der Befehl fungiert wie ein "Schnappschuss" des aktuellen Program-Data-Vector (PDV).
Effiziente Berechnungen: In Verbindung mit RETAIN oder Akkumulatoren können Sie OUTPUT nutzen, um nur Endergebnisse (z. B. nach genau 10 Iterationen mittels STOP) zu schreiben, statt jede Zwischenberechnung zu speichern. »
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.