كيفية تمرير سلسلة كاسم متغير في dplyr


يمكنك استخدام إحدى الطرق التالية لتمرير سلسلة كاسم متغير في dplyr:

الطريقة الأولى: استخدام get()

 df %>% filter(get(my_var) == ' A ')

الطريقة الثانية: استخدم البيانات

 df %>% filter(. data [[my_var]] == ' A ')

توضح الأمثلة التالية كيفية استخدام كل طريقة عمليًا مع إطار البيانات التالي:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B'),
                 points=c(99, 90, 86, 88, 95),
                 assists=c(33, 28, 31, 39, 34),
                 rebounds=c(30, 28, 24, 24, 28))

#view data frame
df

  team points assists rebounds
1 A 99 33 30
2 A 90 28 28
3 A 86 31 24
4 B 88 39 24
5 B 95 34 28

مثال 1: تمرير سلسلة كاسم متغير في dplyr باستخدام get()

إذا حاولنا تصفية إطار بيانات عن طريق تمرير سلسلة كاسم متغير إلى الدالة filter() في dplyr، فسنحصل على إطار بيانات فارغ:

 library (dplyr)

#define variable
my_var <- ' team '

#attempt to filter for rows where team is equal to a variable
df %>% filter(my_var == ' A ')

[1] team points assists rebounds
<0 rows> (or 0-length row.names)

إحدى الطرق للتغلب على ذلك هي تغليف اسم المتغير في الدالة get() :

 library (dplyr)

#define variable
my_var <- ' team '

#filter for rows where team is equal to a variable
df %>% filter(get(my_var) == ' A ')

  team points assists rebounds
1 A 99 33 30
2 A 90 28 28
3 A 86 31 24

باستخدام الدالة get() في الدالة filter() ، يمكننا تصفية صفوف إطار البيانات بنجاح فقط للصفوف التي يكون فيها الفريق مساويًا لـ A.

المثال 2: تمرير سلسلة كاسم متغير في dplyr باستخدام .data

هناك طريقة أخرى لتمرير سلسلة كاسم متغير إلى الدالة filter() في dplyr وهي استخدام الدالة .data كما يلي:

 library (dplyr)

#define variable
my_var <- ' team '

#filter for rows where team is equal to a variable
df %>% filter(. data [[my_var]] == ' A ')

  team points assists rebounds
1 A 99 33 30
2 A 90 28 28
3 A 86 31 24

باستخدام وظيفة .data في وظيفة filter() ، يمكننا تصفية الصفوف في إطار البيانات بنجاح فقط للصفوف التي يكون فيها الفريق مساويًا لـ A.

مصادر إضافية

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

كيفية تحديد الصف الأول حسب المجموعة باستخدام dplyr
كيفية التصفية حسب شروط متعددة باستخدام dplyr
كيفية تصفية الصفوف التي تحتوي على سلسلة معينة باستخدام dplyr

Add a Comment

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