Veröffentlicht am :
Datenmanipulation CREATION_INTERNE

Beispiele: DO-Schleifen

Dieser Code ist auch verfügbar auf: English Español
Wartet auf Validierung
DO-Schleifen in SAS© ermöglichen die wiederholte Ausführung einer Gruppe von Anweisungen. Es gibt verschiedene Formen von iterativen Schleifen: einfache, verschachtelte für komplexe Verarbeitungen (z.B. Berechnung von Zinseszinsen), DOLIST zum Iterieren über eine Werteliste, DO TO zur Angabe eines Endwerts und DO TO BY zur Definition eines spezifischen Inkrements. Bedingte Schleifen wie DO WHILE (wird ausgeführt, solange eine Bedingung wahr ist) und DO UNTIL (wird ausgeführt, bis eine Bedingung wahr wird) bieten eine präzise Steuerung des Ausführungsflusses. Die Syntax und das Verhalten dieser Schleifen sind identisch, unabhängig davon, ob der DATA-Schritt auf dem SAS© Compute Server oder in der CAS-Umgebung ausgeführt wird.
Datenanalyse

Type : CREATION_INTERNE


Die Beispiele verwenden generierte Daten (Datalines) oder SASHELP.

1 Codeblock
DATA STEP Data
Erklärung :
Dieses Beispiel verwendet eine iterative DO-Anweisung, um die Werte der Variablen 'balance' wiederholt zu dekrementieren und diese Werte in das Ausgabe-Dataset zu schreiben. Der DATA-Schritt wird auf dem SAS Compute Server ausgeführt.
Kopiert!
1DATA loan;
2 balance=10000;
3 DO payment_number=1 to 10;
4 balance=balance-1000;
5 OUTPUT;
6 END;
7RUN;
8PROC PRINT DATA=loan;
9RUN;
2 Codeblock
DATA STEP Data
Erklärung :
Dieses Beispiel verwendet dieselbe iterative DO-Schleife, um den DATA-Schritt in CAS auszuführen und eine Ausgabe-CAS-Tabelle zu erstellen.
Kopiert!
1cas casauto sessopts=(caslib='casuser');
2LIBNAME mylib cas;
3 
4DATA mylib.loan;
5 balance=10000;
6 DO payment_number=1 to 10;
7 balance=balance-1000;
8 OUTPUT;
9 END;
10RUN;
11PROC PRINT DATA=mylib.loan;
12RUN;
3 Codeblock
DATA STEP Data
Erklärung :
Dieses Beispiel zeigt, wie eine DO-Schleife in eine andere verschachtelt wird, um den Wert einer einjährigen Investition mit einem jährlichen Zinssatz von 7,5 %, monatlich verzinst, zu berechnen.
Kopiert!
1DATA earn;
2 Capital=2000;
3 DO Year=1 to 10;
4 DO Month=1 to 12;
5 Interest=Capital*(.075/12);
6 Capital+Interest;
7 OUTPUT;
8 END;
9 END;
10RUN;
11PROC PRINT DATA=earn; RUN;
4 Codeblock
DATA STEP Data
Erklärung :
Dieses Beispiel verwendet die DOLIST-Syntax, um über eine Liste von Werten zu iterieren, einschließlich einzelner, mehrfacher Werte, Ausdrücke und Sequenzen mit oder ohne Variablen.
Kopiert!
1DATA do_list;
2 x=-5;
3 DO i=5, /*a single value*/
4 5, 4, /*multiple values*/
5 x + 10, /*an expression*/
6 80 to 90 BY 5, /*a sequence*/
7 60 to 40 BY x; /*a sequence with a variable*/
8 OUTPUT;
9 END;
10RUN;
11PROC PRINT DATA=do_list; RUN;
5 Codeblock
DATA STEP Data
Erklärung :
Dieses Beispiel verwendet die iterative DO TO-Syntax, um die Werte von 'x' wiederholt zu inkrementieren. Die Schleife verwendet auch die OUTPUT-Anweisung, um jeden inkrementierten Wert von 'x' in das Ausgabe-Dataset zu schreiben.
Kopiert!
1DATA do_to;
2 x=0;
3 DO i=0 to 10;
4 x=x+1;
5 OUTPUT;
6 END;
7RUN;
8PROC PRINT DATA=do_to;
9RUN;
6 Codeblock
DATA STEP Data
Erklärung :
Dieses Beispiel verwendet die iterative DO TO-Wert BY-Inkrement-Syntax, um die Werte von 'x' wiederholt um '1' zu inkrementieren. Der BY-Inkrement-Wert gibt an, dass sich die Indexvariable bei jeder Ausführung der Schleife um '2' erhöht. Die Schleife verwendet auch die OUTPUT-Anweisung, um jeden inkrementierten Wert von 'x' in das Ausgabe-Dataset zu schreiben.
Kopiert!
1DATA do_to_by;
2 x=0;
3 DO i=0 to 10 BY 2;
4 x=x+1;
5 OUTPUT;
6 END;
7RUN;
8PROC PRINT DATA=do_to_by;
9RUN;
7 Codeblock
DATA STEP Data
Erklärung :
Der erste DATA-Schritt in diesem Beispiel verwendet eine DO WHILE-Schleife, um eine Gruppe von Anweisungen wiederholt auszuführen, solange eine Bedingung wahr ist. Das Programm berechnet die Anzahl der erforderlichen Zahlungen für einen angegebenen Darlehensbetrag, indem es wiederholt iteriert, um 'Balance' zu dekrementieren, solange der Saldo größer als Null ist. Der DATA-Schritt wird auf dem SAS Compute Server ausgeführt.
Kopiert!
1DATA loan;
2 balance=10000;
3 payment=0;
4 DO while (balance>0);
5 balance=balance-1000;
6 payment=payment+1;
7 OUTPUT;
8 END;
9RUN;
10PROC PRINT DATA=mylib.loan;
11RUN;
8 Codeblock
DATA STEP Data
Erklärung :
Dieser DATA-Schritt lädt dieselben Daten in eine Tabelle in einer anderen Bibliothek, 'mylib.loan', und berechnet dann die Anzahl der Zahlungen, die für das angegebene Darlehen geleistet werden müssen. Dies geschieht durch wiederholtes Iterieren und Dekrementieren der Werte von 'Balance', bis der Saldo Null ist.
Kopiert!
1LIBNAME mylib;
2 
3DATA mylib.loan;
4 balance=10000;
5 payment=0;
6 DO until (balance=0);
7 balance=balance-1000;
8 payment=payment+1;
9 OUTPUT;
10 END;
11RUN;
12PROC PRINT DATA=mylib.loan;
13RUN;
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.