คู่มือฉบับสมบูรณ์เกี่ยวกับ do loop ใน sas
DO loop ใน SAS สามารถใช้เพื่อ ดำเนิน การตามจำนวนครั้งที่กำหนด
มี DO ลูปพื้นฐานสามลูปใน SAS:
1. สร้างวง
data data1;
x = 0;
do i = 1 to 10;
x = i*4;
output ;
end ;
run ;
ให้ประโยชน์อะไรบ้าง : ลูปนี้วนซ้ำ 10 ครั้ง ตั้งแต่ i = 1 ถึง 10 โดยที่ค่าของแต่ละแถวเท่ากับ i คูณด้วย 4
เมื่อหยุด : การวนซ้ำนี้จะหยุดหลังจากวนซ้ำ 10 ครั้งเท่านั้น
2. ทำ DURING วนซ้ำ
data data2;
x = 0;
do i = 1 to 10 while(x < 20 );
x = i*4;
output ;
end ;
run ;
ให้ประโยชน์อะไรบ้าง : ลูปนี้จะพยายามวนซ้ำ 10 ครั้ง ตั้งแต่ i = 1 ถึง 10 โดยที่ค่าของแต่ละแถวเท่ากับ i คูณด้วย 4
เมื่อหยุด : ลูปนี้จะหยุดเมื่อค่า x เกิน 20 หรือเมื่อวนซ้ำ 10 ครั้ง แล้วแต่ว่ากรณีใดจะเกิดขึ้นก่อน
3.ทำจนเป็นวง
data data3;
x = 0;
do i = 1 to 10 until(x > 30 );
x = i*4;
output ;
end ;
run ;
ให้ประโยชน์อะไรบ้าง : ลูปนี้จะพยายามวนซ้ำ 10 ครั้ง ตั้งแต่ i = 1 ถึง 10 โดยที่ค่าของแต่ละแถวเท่ากับ i คูณด้วย 4
เมื่อหยุด : ลูปนี้จะหยุดเมื่อค่า x เกิน 30 หรือเมื่อวนซ้ำ 10 ครั้ง แล้วแต่ว่ากรณีใดจะเกิดขึ้นก่อน
ตัวอย่างต่อไปนี้แสดงวิธีใช้แต่ละ DO loop ในทางปฏิบัติ
ตัวอย่างที่ 1: DO วนซ้ำ
เราสามารถใช้ DO loop ต่อไปนี้เพื่อสร้างชุดข้อมูล 10 แถว:
/*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;
ผลลัพธ์คือชุดข้อมูลที่มี 10 แถวโดยค่าในคอลัมน์ i อยู่ระหว่าง 1 ถึง 10 และค่าในคอลัมน์ x อยู่ระหว่าง 4 ถึง 40
โปรดทราบว่าคุณสามารถใช้ drop i เพื่อปล่อยคอลัมน์ดัชนีจากชุดข้อมูล:
/*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;
ตัวอย่างที่ 2: DO WHILE วนซ้ำ
เราสามารถใช้ วง DO WHILE ต่อไปนี้เพื่อสร้างชุดข้อมูลที่มีตัวแปร i จาก i = 1 ถึง 10 โดยที่ค่าของแต่ละแถวเท่ากับ i คูณด้วย 4 ในขณะที่ x น้อยกว่า 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;
โปรดทราบว่าการวนซ้ำหยุดสร้างแถวเมื่อ xa ถึง 20
ตัวอย่างที่ 3: ทำจนกว่าจะวนซ้ำ
เราสามารถใช้ ลูป DO UNTIL ต่อไปนี้เพื่อสร้างชุดข้อมูลที่มีตัวแปร i จาก i = 1 ถึง 10 โดยที่ค่าของแต่ละแถวเท่ากับ i คูณด้วย 4 จนกระทั่ง x มากกว่า 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;
โปรดทราบว่าการวนซ้ำหยุดสร้างแถวเมื่อ x เกิน 30
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ ใน SAS:
วิธีทำให้ข้อมูลเป็นมาตรฐานใน SAS
วิธีลบรายการที่ซ้ำกันใน SAS
วิธีแทนที่ค่าที่หายไปด้วยศูนย์ใน SAS