كيفية كتابة بيان الحالة باللغة r (مع مثال)


عبارة الحالة هي نوع من البيانات التي تتنقل عبر الشروط وترجع قيمة عند استيفاء الشرط الأول.

أسهل طريقة لتنفيذ بيان الحالة في R هي استخدام الدالة case_when() من الحزمة dplyr :

 library (dplyr)

df %>% 
  mutate(new_column = case_when(
    col1 < 9 ~ ' value1 ',
    col1 < 12 ~ ' value2 ',
    col1 < 15 ~ ' value3 ',
    TRUE ~ ' Great '))

تبحث هذه الدالة المحددة في القيمة الموجودة في العمود المسمى col1 وترجع:

  • value1 ” إذا كانت القيمة في العمود 1 أقل من 9
  • value2 ” إذا كانت القيمة في العمود 1 أقل من 12
  • value3 ” إذا كانت القيمة في col2 أقل من 15
  • القيمة 4 ” إذا لم يكن أي من الشروط السابقة صحيحا

لاحظ أن TRUE يعادل عبارة “آخر”.

يوضح المثال التالي كيفية استخدام هذه الوظيفة عمليًا.

مثال: بيان الحالة في R

لنفترض أن لدينا إطار البيانات التالي في R:

 #create data frame
df <- data. frame (player=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
                 points=c(6, 8, 9, 9, 12, 14, 15, 17, 19, 22))

#view data frame
df

   player points
1 1 6
2 2 8
3 3 9
4 4 9
5 5 12
6 6 14
7 7 15
8 8 17
9 9 19
10 10 22

يمكننا استخدام الصيغة التالية لكتابة بيان حالة يقوم بإنشاء عمود جديد يسمى الفئة التي يتم تحديد قيمها من خلال القيم الموجودة في عمود النقاط :

 library (dplyr)

#create new column using case statement
df %>% 
  mutate(class = case_when(
    points < 9 ~ ' Bad ',
    points < 12 ~ ' OK ',
    points < 15 ~ ' Good ',
    TRUE ~ ' Great '))

   player points class
1 1 6 Bad
2 2 8 Bad
3 3 9 OK
4 4 9 OK
5 5 12 Good
6 6 14 Good
7 7 15 Great
8 8 17 Great
9 9 19 Great
10 10 22 Great

نظر بيان الحالة إلى القيمة الموجودة في عمود النقاط وأعاد:

  • سيئ ” إذا كانت القيمة في عمود النقاط أقل من 9
  • موافق ” إذا كانت القيمة في عمود النقاط أقل من 12
  • جيد ” إذا كانت القيمة في عمود النقاط أقل من 15
  • رائع ” إذا لم يكن أي من الشروط السابقة صحيحا

يُسمى العمود الجديد class ، نظرًا لأن هذا هو الاسم الذي حددناه في الدالة mutate() .

مصادر إضافية

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

كيفية استخدام عبارة If مع شروط متعددة في R
كيفية كتابة عبارة If Else المتداخلة في R
كيفية كتابة دالة TryCatch() الأولى في R

Add a Comment

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