كيفية استخدام بيان الاحتفاظ في sas (مع أمثلة)
يمكنك استخدام عبارة RETAIN في SAS لتحديد متغير لا ينبغي تعيين قيمته على أنها مفقودة في بداية كل تكرار لخطوة البيانات .
يمكن استخدام عبارة 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: استخدم الاحتفاظ لحساب العدد التراكمي لكل مجموعة
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_count إلى 1. وبخلاف ذلك، تمت إضافة قيمة 1 إلى القيمة الحالية لـ store_count .
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في SAS:
كيفية حساب المبلغ لكل مجموعة في SAS
كيفية حساب المتوسط لكل مجموعة في SAS
كيفية حساب المتوسط المتحرك في ساس