Dplyr: كيفية استخدام mutate() مع شروط متعددة


يمكنك استخدام بناء الجملة الأساسي التالي في dplyr لاستخدام الدالة mutate() لإنشاء عمود جديد بناءً على شروط متعددة:

 library (dplyr)

df <- df%>% mutate(class = case_when((team == ' A ' & points >= 20) ~ ' A_Good ',
                                     (team == ' A ' & points < 20) ~ ' A_Bad ',
                                     (team == ' B ' & points >= 20) ~ ' B_Good ',
                                      TRUE ~ ' B_Bad '))

يقوم بناء الجملة هذا بإنشاء عمود جديد يسمى الفئة والذي يأخذ القيم التالية:

  • أ_جيد إذا كان الفريق يساوي A والنقاط أكبر من أو تساوي 20.
  • أ_سيئ إذا كان الفريق يساوي A والنقاط أقل من 20.
  • ب_جيد إذا كان الفريق يساوي ب والنقاط أكبر من أو تساوي 20.
  • ب_سيئ في حالة عدم استيفاء أي من الشروط السابقة.

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

ذات صلة: كيفية استخدام case_when() في dplyr

مثال: استخدم mutate() في dplyr بشروط متعددة

لنفترض أن لدينا إطار البيانات التالي في R الذي يحتوي على معلومات حول لاعبي كرة السلة المختلفين:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'),
                 points=c(22, 30, 34, 19, 14, 12, 39, 15, 22, 25))

#view data frame
df

   team points
1 to 22
2 to 30
3 to 34
4 to 19
5 to 14
6 B 12
7 B 39
8 B 15
9 B 22
10 B 25

يمكننا استخدام الصيغة التالية مع الدالة mutate() لإنشاء عمود جديد يسمى الفئة التي تعتمد قيمها على القيم الموجودة في أعمدة الفريق والنقاط :

 library (dplyr)
#add new column based on values in team and points columns
df <- df%>% mutate(class = case_when((team == ' A ' & points >= 20) ~ ' A_Good ',
                                     (team == ' A ' & points < 20) ~ ' A_Bad ',
                                     (team == ' B ' & points >= 20) ~ ' B_Good ',
                                      TRUE ~ ' B_Bad '))

#view updated data frame
df

   team points class
1 A 22 A_Good
2 A 30 A_Good
3 A 34 A_Good
4 A 19 A_Bad
5 A 14 A_Bad
6 B 12 B_Bad
7 B 39 B_Good
8 B 15 B_Bad
9 B 22 B_Good
10 B 25 B_Good

  يأخذ عمود الفئة الجديدة القيم بناءً على القيم الموجودة في أعمدة الفريق والنقاط .

على سبيل المثال، يحتوي الصف الأول على قيمة A في عمود الفريق وقيمة نقاط أكبر من أو تساوي 20، لذلك حصل على قيمة A_Good في عمود الفئة الجديدة.

لاحظ أنه في هذا المثال، استخدمنا الرمز & كعامل تشغيل “AND” للتحقق مما إذا كان الشرطان صحيحين قبل تعيين قيمة في عمود الفئة .

ومع ذلك، كان بإمكاننا استخدام | رمز كعامل تشغيل “OR” للتحقق بدلاً من ذلك من استيفاء أي من الشرطين قبل تعيين قيمة في عمود الفئة .

مصادر إضافية

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

dplyr: كيفية تحويل متغير إذا كان العمود يحتوي على سلسلة
dplyr: كيفية تغيير مستويات العامل باستخدام mutate()
dplyr: كيفية استخدام الدالة cross()

Add a Comment

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