Veröffentlicht am :
SAS-Programmierung CREATION_INTERNE

Beispiele: DO-Schleifen

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Detaillierte Funktionsanalyse der DO-Schleifen. DO-Schleifen sind Kontrollflussstrukturen, die verwendet werden, um eine Gruppe von Anweisungen wiederholt auszuführen. Sie können iterativ sein (mit einem Index, einer Liste oder einer Sequenz) oder bedingt (solange eine Bedingung wahr ist oder bis eine Bedingung wahr wird). Die vorgestellten Beispiele decken diese verschiedenen Formen ab und demonstrieren ihre Anwendung für die Datenmanipulation, die Zinsberechnung und andere Szenarien. Es wird betont, dass die Syntax und das Verhalten identisch sind, ob der DATA-Schritt auf dem SAS© Compute Server oder in der CAS-Umgebung ausgeführt wird, obwohl die Ausführung in CAS manchmal in einem einzigen Thread erfolgen kann, wenn keine Eingabetabelle angegeben ist.
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 den Ausgabedatensatz 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 CAS-Ausgabetabelle zu erstellen. Obwohl der DATA-Schritt in CAS ausgeführt wird, erfolgt dies in einem einzigen Thread, da keine Eingabetabelle angegeben ist.
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. Die Verschachtelung ist nützlich, wenn eine interne Aktion für jeden Durchlauf der äußeren Schleife wiederholt werden muss.
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, Ausdrücken oder Sequenzen zu iterieren. Der Index der DO-Schleife nimmt nacheinander die in der Liste angegebenen, durch Kommas getrennten Werte an.
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-<Wert>-Syntax, um die Werte von 'x' wiederholt zu inkrementieren. Die OUTPUT-Anweisung wird verwendet, um jeden inkrementierten Wert von 'x' in den Ausgabedatensatz zu schreiben. Der Wert 'TO' gibt den Endwert der Indexvariablen an.
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 zu inkrementieren. Der Wert 'BY-<Inkrement>' gibt an, dass die Indexvariable bei jeder Ausführung der Schleife um '2' inkrementiert wird. Die OUTPUT-Anweisung schreibt jeden inkrementierten Wert von 'x' in den Ausgabedatensatz.
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 :
Dieser erste DATA-Schritt verwendet eine DO-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 bestimmten Darlehensbetrag, indem es den 'Balance'-Wert wiederholt dekrementiert, 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 neue Tabelle in einer anderen Bibliothek, 'mylib.loan', und berechnet dann die Anzahl der erforderlichen Zahlungen für das angegebene Darlehen. Dies geschieht durch wiederholtes Iterieren und Dekrementieren der 'Balance'-Werte, bis der Saldo Null ist. Der DATA-Schritt wird in CAS ausgeführt, jedoch in einem einzigen Thread, da keine Eingabetabelle vorhanden ist.
Kopiert!
1LIBNAME mylib cas;
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.
Urheberrechtsinformationen : Copyright © SAS Institute Inc. All Rights Reserved