كيفية الإصلاح في r: الدالة التجميعية مفقودة، والإعدادات الافتراضية هي "الطول"


الخطأ الذي قد تواجهه عند استخدام R هو:

 Aggregation function missing: defaulting to length

يحدث هذا الخطأ عند استخدام وظيفة dcast في حزمة reshape2 لتحويل إطار بيانات من تنسيق طويل إلى تنسيق واسع ، ولكن يمكن وضع قيم متعددة في الخلايا الفردية لإطار البيانات الواسع.

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

كيفية إعادة إنتاج الخطأ

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

 #create data frame
df <- data. frame (store=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 promotion=c('Y', 'Y', 'N', 'N', 'Y', 'Y', 'N', 'N'),
                 product=c(1, 2, 1, 2, 1, 2, 1, 2),
                 sales=c(12, 18, 29, 20, 30, 11, 15, 22))

#view data frame
df

  store promotion product sales
1 AY 1 12
2 AY 2 18
3 YEAR 1 29
4 YEAR 2 20
5 BY 1 30
6 BY 2 11
7 BN 1 15
8 BN 2 22

لنفترض الآن أننا نحاول استخدام الدالة dcast لتحويل إطار البيانات من التنسيق الطويل إلى التنسيق الواسع:

 library (reshape2)

#convert data frame to wide format
df_wide <- dcast(df, store ~ product, value. var = " sales ")

#view result
df_wide

Aggregation function missing: defaulting to length
  store 1 2
1 to 2 2
2 B 2 2

لاحظ أن وظيفة dcast تعمل ولكننا نتلقى رسالة التحذير Aggregate Function Missing .

كيفية اصلاح الخطأ

سبب تلقينا رسالة تحذير هو أنه لكل مجموعة من المتجر والمنتج ، هناك قيمتان محتملتان يمكننا استخدامهما للمبيعات .

على سبيل المثال، بالنسبة للمتجر أ والمنتج 1، يمكن أن تكون قيمة المبيعات 12 أو 29.

لذا فإن وظيفة dcast افتراضية على “الطول” كوظيفة التجميع الخاصة بها.

على سبيل المثال، تخبرنا قاعدة البيانات الكبيرة أنه بالنسبة للمتجر أ والمنتج 1، هناك إجمالي قيمتين للمبيعات.

إذا كنت تريد استخدام دالة تجميع مختلفة بدلاً من ذلك، فيمكنك استخدام fun.aggregate .

على سبيل المثال، يمكننا استخدام الصيغة التالية لحساب مجموع المبيعات حسب المتجر والمنتج :

 library (reshape2)

#convert data frame to wide format
df_wide <- dcast(df, store ~ product, value. var = " sales ", fun. aggregate =sum)

#view result
df_wide

  store 1 2
1 A 41 38
2 B 45 33

إليك كيفية تفسير القيم في إطار البيانات الكبيرة:

  • مجموع مبيعات المتجر أ والمنتج 1 هو 41 .
  • مجموع مبيعات المتجر أ والمنتج 2 هو 38 .
  • مجموع مبيعات المتجر B والمنتج 1 هو 45 .
  • مجموع مبيعات المتجر B والمنتج 2 هو 33 .

لاحظ أننا لم نتلقى أية رسائل تحذيرية هذه المرة لأننا استخدمنا الوسيط fun.aggregate .

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية إصلاح الأخطاء الشائعة الأخرى في R:

كيفية الإصلاح في R: ثابت السلسلة غير المتوقع
كيفية الإصلاح في R: صيغة القالب غير صالحة في ExtractVars
كيفية الإصلاح في R: الوسيطة ليست رقمية ولا منطقية: return na

Add a Comment

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