De complete gids voor do-loops in sas
Een DO-lus in SAS kan worden gebruikt om een actie een bepaald aantal keren uit te voeren .
Er zijn drie fundamentele DO-lussen in SAS:
1. MAAK de lus
data data1;
x = 0;
do i = 1 to 10;
x = i*4;
output ;
end ;
run ;
Wat het doet : Deze lus voert 10 iteraties uit, van i = 1 tot 10, waarbij de waarde van elke rij gelijk is aan i vermenigvuldigd met 4.
Wanneer het stopt : Deze lus stopt pas na 10 iteraties.
2. DOEN TIJDENS lus
data data2;
x = 0;
do i = 1 to 10 while(x < 20 );
x = i*4;
output ;
end ;
run ;
Wat het doet : Deze lus probeert 10 iteraties uit te voeren, van i = 1 tot 10, waarbij de waarde van elke rij gelijk is aan i vermenigvuldigd met 4.
Wanneer het stopt : Deze lus stopt wanneer de waarde van x groter is dan 20 of wanneer 10 iteraties zijn voltooid, afhankelijk van wat zich het eerst voordoet.
3. Doe dit tot aan de lus
data data3;
x = 0;
do i = 1 to 10 until(x > 30 );
x = i*4;
output ;
end ;
run ;
Wat het doet : Deze lus probeert 10 iteraties uit te voeren, van i = 1 tot 10, waarbij de waarde van elke rij gelijk is aan i vermenigvuldigd met 4.
Wanneer het stopt : Deze lus stopt wanneer de waarde van x groter is dan 30 of wanneer 10 iteraties zijn voltooid, afhankelijk van wat zich het eerst voordoet.
De volgende voorbeelden laten zien hoe u elke DO-lus in de praktijk kunt gebruiken.
Voorbeeld 1: DO-lus
We kunnen de volgende DO-lus gebruiken om een dataset van 10 rijen te maken:
/*use DO loop to create dataset*/
data data1;
x = 0;
do i = 1 to 10;
x = i*4;
output ;
end ;
run ;
/*view dataset*/
proc print data =data1;
Het resultaat is een dataset met 10 rijen waarbij de waarden in kolom i variëren van 1 tot 10 en de waarden in kolom x variëren van 4 tot 40.
Merk op dat u drop i kunt gebruiken om de indexkolom uit de gegevensset te verwijderen:
/*use DO loop to create dataset*/
data data1;
x = 0;
do i = 1 to 10;
x = i*4;
output ;
end ;
drop i;
run ;
/*view dataset*/
proc print data =data1;
Voorbeeld 2: DO WHILE-lus
We kunnen de volgende DO WHILE-lus gebruiken om een dataset te maken met variabele i van i = 1 tot 10, waarbij de waarde van elke rij gelijk is aan i vermenigvuldigd met 4 terwijl x kleiner is dan 20:
/*use DO WHILE loop to create dataset*/
data data2;
x = 0;
do i = 1 to 10 while (x < 20 );
x = i*4;
output ;
end ;
run ;
/*view dataset*/
proc print data =data2;
Merk op dat de lus stopte met het maken van rijen zodra xa 20 bereikte.
Voorbeeld 3: DO UNTIL-lus
We kunnen de volgende DO UNTIL-lus gebruiken om een gegevensset te maken met variabele i van i = 1 tot 10, waarbij de waarde van elke rij gelijk is aan i vermenigvuldigd met 4 totdat x groter is dan 30:
/*use DO UNTIL loop to create dataset*/
data data3;
x = 0;
do i = 1 to 10 until (x > 30 );
x = i*4;
output ;
end ;
run ;
/*view dataset*/
proc print data =data3;
Merk op dat de lus stopte met het maken van rijen zodra x groter was dan 30.
Aanvullende bronnen
In de volgende zelfstudies wordt uitgelegd hoe u andere veelvoorkomende taken in SAS kunt uitvoeren:
Gegevens normaliseren in SAS
Hoe duplicaten in SAS te verwijderen
Hoe ontbrekende waarden te vervangen door nul in SAS