ج: كيفية استخدام aggregate() وعدم حذف الصفوف مع na


يمكنك استخدام الدالة Aggregate() في R لحساب إحصائيات التلخيص للمتغيرات في إطار البيانات.

افتراضيًا، إذا واجهت الدالة Aggregate() صفًا في إطار بيانات يحتوي على قيمة NA واحدة أو أكثر، فستقوم ببساطة بإزالة الصف عند إجراء العمليات الحسابية.

قد يؤدي هذا إلى عواقب غير متوقعة عند إجراء العمليات الحسابية.

لتجنب هذا السلوك، يمكنك استخدام الوسيطة na.action=NULL في الدالة Aggregate() .

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

مثال: استخدم agggate() في R ولا تحذف الأسطر التي تحتوي على NA

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

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'C'),
                 points=c(5, 9, 12, 14, 14, 13, 10, 6, 15, 18),
                 assists=c(NA, 4, 4, 5, 3, 6, 8, 4, 10, NA))

#view data frame
df

   team points assists
1 to 5 NA
2 to 9 4
3 to 12 4
4 to 14 5
5 A 14 3
6 B 13 6
7 B 10 8
8 B 6 4
9 C 15 10
10 C 18 NA

لنفترض الآن أننا نحاول استخدام الدالة Aggregate() لحساب مجموع النقاط والتمريرات الحاسمة ، مجمعة حسب الفريق :

 #attempt to calculate sum of points and assists, grouped by team
aggregate(. ~ team, data=df, FUN=sum, na. rm = TRUE )

  team points assists
1 A 49 16
2 B 29 18
3 C 15 10

تظهر لنا النتيجة مجموع النقاط والتمريرات الحاسمة لكل فريق، ولكن تمت إزالة الصفوف التي تحتوي على قيم NA بالفعل عند تشغيل هذه الحسابات.

يمكننا تأكيد ذلك من خلال النظر إلى إطار البيانات الأصلي ورؤية أن الفريق C لديه قيمتان في عمود النقاط :

  • 15
  • 18

لذا، يجب أن يكون لدى الفريق C إجمالي 33 نقطة، لكن النتيجة تظهر 15 فقط.

وذلك لأن الصف الذي تبلغ قيمة النقاط فيه 18 يحتوي على قيمة NA في عمود التمريرات الحاسمة ، مما يعني أن هذا الصف لم يتم استخدامه فعليًا عند حساب مجموع نقاط الفريق مقابل مجموع نقاط الفريق.

لضمان عدم إزالة الصفوف ذات قيم NA عند إجراء العمليات الحسابية، نحتاج إلى استخدام الوسيطة na.action=NULL كما يلي:

 #calculate sum of points and assists, grouped by team (don't drop NA rows)
aggregate(. ~ team, data=df, FUN=sum, na. rm = TRUE , na. action =NULL)

  team points assists
1 A 54 16
2 B 29 18
3 C 33 10

لاحظ أن الدالة Aggregate() ترجع بشكل صحيح مجموع قيم النقاط للفريق C يساوي 33 هذه المرة.

ملحوظة : تحدد الوسيطة na.rm=TRUE أنه يجب تجاهل قيم NA عند إجراء عملية حسابية في عمود معين.

مصادر إضافية

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

كيفية استخدام وظيفة الملخص () في R
كيفية حساب المتوسط لكل مجموعة في R
كيفية حساب الإحصائيات الوصفية في R

Add a Comment

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