SAS三種循環(huán)循環(huán)
在一般編程中, 語句是按順序執(zhí)行的, 即, 程序的第一條語句首先執(zhí)行, 然后第二條執(zhí)行, 依此類推。但是, 在某些情況下, 我們需要執(zhí)行特定次數(shù)或重復(fù)執(zhí)行同一組語句。在這種情況下, 我們需要使用循環(huán)。在SAS中, 我們可以通過使用Do Statement(也稱為Do Loop)來使用循環(huán)。SAS編程中使用了三個(gè)基本循環(huán):DO循環(huán)、DO UNTIL循環(huán)、DO WHILE循環(huán)。現(xiàn)在, 讓我們了解SAS編程中這些循環(huán)的動(dòng)作:
DO循環(huán)
這是DO循環(huán)的最簡單形式。DO循環(huán)的操作是無條件的, 這意味著如果我們指示該循環(huán)執(zhí)行一條語句50次, 那么它將無限制地執(zhí)行該語句50次(除非在處理過程中發(fā)生錯(cuò)誤)。讓我們舉個(gè)例子來了解它的工作原理。
例:
在此, 我們以增加銀行賬戶余額為例, 并在接下來的4筆Rs.1000盧比之后計(jì)算賬戶余額。
假設(shè)初始賬戶余額為9000, 則可以在以下代碼中分配”余額= 9000″。
DATA account;
balance = 9000;
do i = 1 to 4;
balance + 1000;
end;
run;
PROC print DATA=account;
run;
在此代碼中, 我們將語句” balance + 1000″執(zhí)行4次, 這樣它將無條件地執(zhí)行多達(dá)4次。
DO UNTIL循環(huán)
第二種類型的循環(huán)是DO UNTIL循環(huán)。我們可以使用此循環(huán)繼續(xù)執(zhí)行語句, 直到條件變?yōu)檎鏋橹埂W屛覀兺ㄟ^一個(gè)例子來理解:
DATA until;
loan = 30000;
payments = 0;
do until (loan = 0);
loan = loan - 1000;
payments = payments + 1;
end;
run;
proc print data=until;
run;
根據(jù)以上輸出, 付款的計(jì)數(shù)一直持續(xù)到貸款變?yōu)榱銥橹埂?br>DO WHILE循環(huán)
循環(huán)的第三種類型是DO WHILE循環(huán)。當(dāng)指定條件保持為真時(shí), 我們可以使用此循環(huán)繼續(xù)執(zhí)行。讓我們通過一個(gè)例子來理解:
在此示例中, 我們將使用DO WHILE循環(huán)來計(jì)算貸款的還款次數(shù)。在這里, 我們使用與上述示例相同的數(shù)據(jù)。
Data while;
loan = 30000;
payments = 0;
do while(loan > 0);
loan = loan - 1000;
payments = payments + 1;
end;
run;
proc print data=while;
run;
根據(jù)以上輸出, 付款的計(jì)數(shù)一直持續(xù)到貸款大于零或條件成立為止。
下面是對3種循環(huán)語句的比較:
迭代DO語句基于索引變量值重復(fù)執(zhí)行DO語句和END語句之間的SAS語句。使用迭代DO語句較容易控制循環(huán)次數(shù)。
DO UNTIL語句重復(fù)執(zhí)行在DO循環(huán)中的語句,直到條件為真。DO UNTIL語句在每次DO循環(huán)迭代結(jié)束后檢查條件。
DO WHILE語句在條件為真時(shí)重復(fù)執(zhí)行DO循環(huán)中的語句。DOWHILE語句在每次DO循環(huán)迭代開始前檢查條件。