วิธีใช้คำสั่ง retain ใน sas (พร้อมตัวอย่าง)


คุณสามารถใช้คำสั่ง RETAIN ใน SAS เพื่อระบุตัวแปรที่ไม่ควรตั้งค่าเป็นหายไปเมื่อเริ่มต้นการวนซ้ำของขั้นตอน DATA แต่ละครั้ง

คำสั่ง RETAIN สามารถใช้กับงานต่างๆ ใน SAS ได้ แต่ต่อไปนี้เป็นกรณีการใช้งานที่พบบ่อยที่สุดสามกรณี:

กรณีที่ 1: ใช้ RETAIN เพื่อคำนวณผลรวมสะสม

 data new_data;
    set original_data;
    retain cum_sum;
    cum_sum + values_variable;
run ;

กรณีที่ 2: ใช้ RETAIN เพื่อคำนวณผลรวมสะสมต่อกลุ่ม

 data new_data;
    set original_data;
    by grouping_variable
    retain cum_sum_by_group;
    if first.grouping_variable then cum_sum_by_group = values_variable;
    else cum_sum_by_group = cum_sum_by_group + values_variable;
run ;

กรณีที่ 3: ใช้ RETAIN เพื่อคำนวณจำนวนสะสมต่อกลุ่ม

 data new_data;
    set original_data;
    by grouping_variable
    retain count_by_group;
    if first.grouping_variable then count_by_group = 1 ;
    else count_by_group = count_by_group + 1 ;
run ;

ตัวอย่างต่อไปนี้แสดงวิธีใช้งานแต่ละกรณีในทางปฏิบัติกับชุดข้อมูลต่อไปนี้ใน SAS ที่แสดงยอดขายที่เกิดขึ้นในวันติดต่อกันโดยร้านค้าต่างๆ:

 /*create dataset*/
data original_data;
    input store $sales;
    datalines ;
At 4
AT 5
At 2
B 6
B 3
B5
C 3
C 8
C 6
;
run ;

/*view dataset*/
proc print data = original_data; 

ตัวอย่างที่ 1: ใช้ RETAIN เพื่อคำนวณผลรวมต่อเนื่อง

รหัสต่อไปนี้แสดงวิธีใช้คำสั่ง RETAIN เพื่อสร้างคอลัมน์ใหม่ในชุดข้อมูลที่แสดงผลรวมของยอดขาย:

 /*calculate cumulative sum of sales*/
data new_data;
    set original_data;
    retain cum_sales;
    cum_sales+sales;
run ;

/*view results*/
proc print data = new_data;

คอลัมน์ใหม่ที่เรียกว่า cum_sales มีผลรวมสะสมของค่าในคอลัมน์ ยอดขาย

ตัวอย่างเช่น:

  • ผลรวมสะสมในบรรทัด 1: 4
  • ผลรวมสะสมในบรรทัด 2: 4 + 5 = 9
  • ผลรวมสะสมในบรรทัด 3: 4 + 5 + 2 = 11

และอื่นๆ

ในตัวอย่างนี้ คำสั่ง RETAIN จะตั้งค่าตัวแปรที่เรียกว่า cum_sales ให้เป็นศูนย์ จากนั้นในการวนซ้ำแต่ละครั้งของขั้นตอน DATA คำสั่งก็จะเพิ่มมูลค่า การขาย ใหม่ให้กับผลรวมสะสมของ cum_sales

ตัวอย่างที่ 2: ใช้ RETAIN เพื่อคำนวณผลรวมสะสมต่อกลุ่ม

รหัสต่อไปนี้แสดงวิธีใช้คำสั่ง RETAIN เพื่อสร้างคอลัมน์ใหม่ในชุดข้อมูลที่แสดงผลรวมยอดขายสะสมตามร้านค้า:

 /*calculate cumulative sum of sales by store*/
data new_data;
    set original_data;
    by store;
    retain cum_sales_by_store;
    if first.store then cum_sales_by_store = sales;
    else cum_sales_by_store = cum_sales_by_store + sales;
run ;

/*view results*/
proc print data =new_data;

คอลัมน์ใหม่ที่เรียกว่า cum_sales_by_store มีผลรวมสะสมของค่าในคอลัมน์ ยอดขาย ซึ่งจัดกลุ่มตามร้านค้า

ในตัวอย่างนี้ คำสั่ง RETAIN จะตั้งค่าตัวแปรชื่อ cum_sales_by_store ให้เป็นศูนย์ จากนั้นในการวนซ้ำขั้นตอน DATA แต่ละครั้ง จะตรวจสอบว่าค่าในคอลัมน์ร้านค้าเป็นค่าแรกสุดที่ปรากฏของค่านั้นหรือไม่

หากเกิดขึ้นครั้งแรก ค่าของ cum_sales_by_store จะถูกตั้งค่าเป็นค่าในคอลัมน์ยอดขาย มิฉะนั้น ค่าในคอลัมน์ยอดขายจะถูกเพิ่มเข้ากับค่าที่มีอยู่สำหรับ cum_sales_by_store

ตัวอย่างที่ 3: ใช้ RETAIN เพื่อคำนวณจำนวนสะสมต่อกลุ่ม

รหัสต่อไปนี้แสดงวิธีใช้คำสั่ง RETAIN เพื่อสร้างคอลัมน์ใหม่ในชุดข้อมูลที่แสดงจำนวนยอดขายสะสมต่อร้านค้า:

 /*calculate cumulative count by store*/
data new_data;
    set original_data;
    by store
    retain store_count;
    if first.store then store_count = 1 ;
    else store_count = store_count + 1 ;
run ;

/*view results*/
proc print data = new_data;

คอลัมน์ใหม่ชื่อ store_count มีจำนวนสะสมของแต่ละร้านค้า

ในตัวอย่างนี้ คำสั่ง RETAIN จะตั้งค่าตัวแปรชื่อ store_count ให้เป็นศูนย์ จากนั้นในการวนซ้ำขั้นตอน DATA แต่ละครั้ง จะตรวจสอบว่าค่าในคอลัมน์ store เป็นค่าที่เกิดขึ้นครั้งแรกของค่านั้นหรือไม่

หากนี่เกิดขึ้นครั้งแรก ค่าของ store_count จะถูกตั้งค่าเป็น 1 มิฉะนั้น ค่า 1 จะถูกเพิ่มเข้ากับค่าที่มีอยู่สำหรับ store_count

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ ใน SAS:

วิธีการคำนวณผลรวมต่อกลุ่มใน SAS
วิธีการคำนวณค่าเฉลี่ยต่อกลุ่มใน SAS
วิธีการคำนวณค่าเฉลี่ยเคลื่อนที่ใน SAS

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *