كيفية العثور على القيمة القصوى لكل مجموعة في r
في كثير من الأحيان قد ترغب في العثور على الحد الأقصى لقيمة كل مجموعة في إطار البيانات في R. ولحسن الحظ، من السهل القيام بذلك باستخدام الوظائف الموجودة في الحزمة dplyr .
يشرح هذا البرنامج التعليمي كيفية القيام بذلك باستخدام إطار البيانات التالي:
#create data frame df <- data.frame(team = c('A', 'A', 'A', 'B', 'B', 'B', 'B'), position = c('G', 'F', 'F', 'G', 'G', 'G', 'F'), points = c(12, 15, 19, 22, 34, 34, 39)) #view data frame df team position points 1 AG 12 2 AF15 3 FY 19 4 BG 22 5 BG 34 6 BG 34 7 BF 39
مثال 1: أوجد الحد الأقصى للقيمة لكل مجموعة
يوضح الكود التالي كيفية العثور على الحد الأقصى للقيمة لكل فريق لكل منصب:
library(dplyr) #find max value by team and position df %>% group_by (team, position) %>% summarize (max = max(points, na.rm= TRUE )) # A tibble: 4 x 3 # Groups: team [?] team position max 1AF 19.0 2 AG 12.0 3 BF 39.0 4 BG 34.0
المثال 2: إرجاع الصفوف التي تحتوي على الحد الأقصى للقيمة لكل مجموعة
يوضح التعليمة البرمجية التالية كيفية إرجاع الصفوف التي تحتوي على الحد الأقصى للقيمة لكل فريق ولكل منصب:
library(dplyr) #find rows that contain max points by team and position df %>% group_by (team, position) %>% filter (points == max(points, na.rm= TRUE )) # A tibble: 5 x 3 # Groups: team, position [4] team position points 1 AG 12.0 2AF 19.0 3 BG 34.0 4 BG 34.0 5BF 39.0
المثال 3: إرجاع صف واحد يحتوي على الحد الأقصى للقيمة لكل مجموعة
في المثال السابق، كان هناك لاعبان حصلا على أكبر عدد من النقاط في الفريق A وكلاهما في المركز G. إذا كنت تريد فقط إعادة اللاعب الأول صاحب القيمة القصوى إلى المجموعة، فيمكنك استخدام الشريحة( ) وظيفة. تعمل على النحو التالي:
library(dplyr) #find rows that contain max points by team and position df %>% group_by (team, position) %>% slice (which.max(points)) # A tibble: 4 x 3 # Groups: team, position [4] team position points 1AF 19.0 2 AG 12.0 3 BF 39.0 4 BG 34.0
مصادر إضافية
الدليل الكامل: كيفية تجميع البيانات وتلخيصها في R
كيفية تصفية الصفوف في R
كيفية إزالة الخطوط المكررة في R