Sas: كيفية استخدام عبارة if في proc sql


على الرغم من أنه من غير الممكن استخدام عبارة IF في PROC SQL في SAS، يمكنك استخدام عامل التشغيل CASE لتحديد القيم التي يجب أن يأخذها المتغير بناءً على شروط معينة.

توضح الأمثلة التالية كيفية استخدام عامل CASE عمليًا مع مجموعة البيانات التالية في SAS التي تحتوي على معلومات حول لاعبي كرة السلة المختلفين:

 /*create dataset*/
data my_data;
    input team $points;
    datalines ;
Cavs 12
Cavs 14
Warriors 15
Hawks 18
Mavs 31
Mavs 32
Mavs 35
Celtics 36
Celtics 40
;
run ;

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

مثال 1: استخدام عامل التشغيل CASE مع نتيجتين فقط

يمكننا استخدام عامل التشغيل CASE في PROC SQL لإنشاء عمود جديد في مجموعة البيانات يسمى Points_flag والذي يأخذ قيمة 0 إذا كانت القيمة في عمود النقاط أقل من 20 أو قيمة 1 بخلاف ذلك:

 /*create new column called points_flag using case operator*/ 
proc sql ;
  select *,
box 
      when points < 20 then 0 else 1
      end as points_flag
from my_data;
quit ; 

لاحظ أن عمود Points_flag يأخذ القيمة 0 إذا كانت قيمة عمود النقاط أقل من 20 أو القيمة 1 بخلاف ذلك.

مثال 2: استخدام عامل التشغيل CASE مع أكثر من نتيجتين

يمكننا أيضًا استخدام عامل التشغيل CASE في PROC SQL لإنشاء عمود جديد في مجموعة البيانات يسمى Points_flag والذي يأخذ قيمة 0 إذا كانت القيمة في عمود النقاط أقل من 20، وقيمة 1 إذا كانت النقاط أقل من 35، أو قيمة 2 بخلاف ذلك:

 /*create new column called points_flag using case operator*/ 
proc sql ;
  select *,
      box 
      when points < 20 then 0
when points < 35 then 1 else 2
      end as points_flag
      from my_data;
quit ; 

لاحظ أن عمود Points_flag يأخذ القيمة 0 أو 1 أو 2 اعتمادًا على القيمة المقابلة في عمود النقاط .

ملاحظة : لا تتردد في استخدام أكبر عدد تريده من العبارات لإنشاء العديد من القيم المختلفة التي تريدها في عمود جديد.

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في SAS:

SAS: كيفية استخدام عامل التشغيل WHERE في PROC SQL
SAS: كيفية استخدام عامل التشغيل IN في PROC SQL
SAS: كيفية استخدام UPDATE في PROC SQL
SAS: كيفية استخدام CONTAINS في PROC SQL

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *