كيفية كتابة بيان الحالة باللغة 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