كيفية استخدام case_when() في dplyr
يمكن استخدام الدالة case_when() من الحزمة dplyr في R لإنشاء متغيرات جديدة من المتغيرات الموجودة.
تستخدم هذه الوظيفة بناء الجملة الأساسي التالي:
library (dplyr) df %>% mutate (new_var = case_when (var1 < 15 ~ ' low ', var2 < 25 ~ ' med ', TRUE ~ ' high '))
لاحظ أن TRUE يعادل عبارة “آخر”.
توضح الأمثلة التالية كيفية استخدام هذه الوظيفة عمليًا مع إطار البيانات التالي:
#create data frame df <- data. frame (player = c('AJ', 'Bob', 'Chad', 'Dan', 'Eric', 'Frank'), position = c('G', 'F', 'F', 'G', 'C', NA), points = c(12, 15, 19, 22, 32, NA), assists = c(5, 7, 7, 12, 11, NA)) #view data frame df player position points assists 1 AJ G 12 5 2 Bob F 15 7 3 Chad F 19 7 4 Dan G 22 12 5 Eric C 32 11 6 Frank NA NA NA
مثال 1: إنشاء متغير جديد من متغير موجود
الكود التالي يوضح كيفية إنشاء متغير جديد يسمى الجودة والتي تشتق قيمها من عمود النقاط :
df %>% mutate (quality = case_when (points > 20 ~ ' high ', points > 15 ~ ' med ', TRUE ~ ' low ' )) player position points assists quality 1 AJ G 12 5 low 2 Bob F 15 7 low 3 Chad F 19 7 med 4 Dan G 22 12 high 5 Eric C 32 11 high 6 Frank NA NA NA low
إليك بالضبط كيفية قيام الدالة case_when() بإنشاء قيم العمود الجديد:
- إذا كانت القيمة الموجودة في عمود النقاط أكبر من 20، فإن القيمة الموجودة في عمود الجودة تكون “عالية”.
- بخلاف ذلك، إذا كانت القيمة في عمود النقاط أكبر من 15، فستكون القيمة في عمود الجودة “متوسطة”.
- بخلاف ذلك، إذا كانت القيمة الموجودة في عمود النقاط أقل من أو تساوي 15 (أو قيمة مفقودة مثل NA)، فإن القيمة الموجودة في عمود الجودة تكون “منخفضة”.
المثال 2: إنشاء متغير جديد من متغيرات متعددة
الكود التالي يوضح كيفية إنشاء متغير جديد يسمى الجودة والتي تشتق قيمها من النقاط والأعمدة المساعدة :
df %>% mutate (quality = case_when (points > 15 & assists > 10 ~ ' great ', points > 15 & assists > 5 ~ ' good ', TRUE ~ ' average ' )) player position points assists quality 1 AJ G 12 5 average 2 Bob F 15 7 average 3 Chad F 19 7 good 4 Dan G 22 12 great 5 Eric C 32 11 great 6 Frank NA NA NA average
لاحظ أنه يمكننا أيضًا استخدام الدالة is.na() لتعيين سلاسل نصية بشكل صريح لقيم NA:
df %>% mutate (quality = case_when (is. na (points) ~ ' missing ', points > 15 & assists > 10 ~ ' great ', points > 15 & assists > 5 ~ ' good ', TRUE ~ ' average ' )) player position points assists quality 1 AJ G 12 5 average 2 Bob F 15 7 average 3 Chad F 19 7 good 4 Dan G 22 12 great 5 Eric C 32 11 great 6 Frank NA NA NA missing
مصادر إضافية
كيفية ترتيب الخطوط في R
كيفية حساب الملاحظات لكل مجموعة في R
كيفية تصفية الصفوف التي تحتوي على سلسلة معينة في R