ج: كيفية استخدام grepl مع نماذج متعددة
يمكنك استخدام بناء الجملة الأساسي التالي مع الدالة grepl() في R لتصفية الصفوف في إطار بيانات يحتوي على أحد أنماط السلسلة المتعددة في عمود معين:
library (dplyr) new_df <- filter(df, grepl(paste(my_patterns, collapse=' | '), my_column))
يقوم بناء الجملة هذا بتصفية إطار البيانات للصفوف حيث تحتوي قيمة العمود المسمى my_column على أحد أنماط السلسلة في المتجه المسمى my_patterns .
يوضح المثال التالي كيفية استخدام بناء الجملة هذا عمليًا.
مثال: كيفية استخدام grepl() مع نماذج متعددة في R
لنفترض أن لدينا إطار البيانات التالي في R الذي يحتوي على معلومات حول فرق كرة السلة المختلفة:
#create data frame df <- data. frame (team=c('Mavs', 'Hawks', 'Nets', 'Heat', 'Cavs'), points=c(104, 115, 124, 120, 112), status=c('Bad', 'Good', 'Excellent', 'Great', 'Bad')) #view data frame df team points status 1 Mavs 104 Bad 2 Hawks 115 Good 3 Nets 124 Excellent 4 Heat 120 Great 5 Cavs 112 Bad
لنفترض أننا نريد تصفية إطار البيانات ليحتوي فقط على الصفوف التي تحتوي فيها سلسلة عمود الحالة على أحد أنماط السلسلة التالية:
- ‘جيد’
- ‘رمادي’
- ‘السابق’
يمكننا استخدام الصيغة التالية مع الدالة grepl() للقيام بذلك:
library (dplyr) #define patterns to search for my_patterns <- c(' Good ', ' Gre ', ' Ex ') #filter for rows where status column contains one of several strings new_df <- filter(df, grepl(paste(my_patterns, collapse=' | '), status)) #view results new_df team points status 1 Hawks 115 Good 2 Nets 124 Excellent 3 Heat 120 Great
لاحظ أنه تمت تصفية إطار البيانات ليحتوي فقط على الصفوف التي تحتوي فيها السلسلة الموجودة في عمود الحالة على أحد الأنماط الثلاثة التي حددناها.
لاحظ أن استخدام الدالة Paste() مع الوسيطة Collapses=’|’ لقد بحثنا بالفعل عن السلسلة “Good|Gre|Ex” في عمود الحالة .
منذ | الرمز الموجود في R يعني “OR”، وقد تمكنا من العثور على الصفوف التي تحتوي على “Good” أو Gre أو “Ex” في عمود الحالة .
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في R:
كيفية تحويل متغير إذا كان العمود يحتوي على سلسلة باستخدام dplyr
كيفية إزالة الحرف الأول من السلاسل باستخدام dplyr
كيفية استبدال سلسلة في عمود باستخدام dplyr