برمجة R / واجهات التحليل وسلامة الجداول / الدرس 8
التجميع وإعادة التشكيل والربط
احفظ مستوى المشاهدة عند تلخيص مجموعات أو دمج جداول بالهوية.
في هذه الصفحة
أهداف الدرس
- تعريف مفاتيح المجموعات ومقامات التجميع.
- توقع تعددية الربط قبل الدمج.
- فحص تفرد التحويل من الطويل للعريض وترتيب الصفوف.
حدد معنى الصف قبل تحويله
قد يمثل الصف عنصراً أو حدثاً أو قياس عنصر ووقت أو ملخص مجموعة. يغير التجميع هذا المستوى بدمج صفوف تشترك في مفاتيح، ويجمع الربط معلومات بعلاقة قد تكرر الصفوف، وتغير إعادة التشكيل توزيع القياسات بين الصفوف والأعمدة. ليست هذه عمليات متبادلة لتحسين المظهر. اكتب مفاتيح المدخل والخرج والتعددية ومعنى القيم قبل اختيار الدالة. احفظ المعرفات الأصلية لتتبع ملخص أو تنبؤ إلى مشاهداته.
جمع القيم بسياسة فقد صريحة
يستخدم المثال aggregate بقائمة مجموعات صريحة ونتيجة عددية مسماة، ثم يرتب المجموعات كيلا يعتمد الخرج على ترتيب غير معلن. يحفظ مجموع المجاميع الأصل لأن كل قيمة منتهية وتنتمي لمجموعة واحدة. يحتاج المتوسط مقامه، خصوصاً مع الفقد أو اختلاف الأحجام. يختلف متوسط متوسطات المجموعات عادة عن متوسط المشاهدات. تحتاج مفاتيح التجميع المفقودة سياسة أيضاً؛ اقرأ سلوك الطريقة ولا تفترض عرض المفتاح المفقود كمجموعة عادية.
d <- data.frame(group = c("a", "b", "a"), minutes = c(2, 10, 4), stringsAsFactors = FALSE)
s <- aggregate(list(total = d$minutes), by = list(group = d$group), FUN = sum)
s <- s[order(s$group), , drop = FALSE]
cat("groups=", paste(s$group, collapse = ","), "\n", sep = "")
cat("totals=", paste(s$total, collapse = ","), "\n", sep = "")
cat("preserved total=", sum(s$total) == sum(d$minutes), "\n", sep = "")
groups=a,b
totals=6,10
preserved total=TRUE
يعطي التجميع ملخصاً لكل مجموعة، ويفيد حفظ المجموع كثابت لهذه القيم الكاملة المنتهية.
يربط الدمج العلاقات لا مواضع الصفوف
صرح بمفاتيح merge؛ فقد يستخدم الافتراضي جميع الأسماء المشتركة ويتغير بعد تحديث المخطط. يبين المثال علاقة واحد بمتعدد: يظهر a مرتين يميناً فينتج صفين. يحفظ الربط اليساري المفاتيح غير المتطابقة ولا يضمن صفاً لكل صف أصلي. قد تضاعف علاقة متعدد بمتعدد الصفوف أكثر. توقع العدد وافحص تكرار المفاتيح والفاقد قبل الوثوق بمقياس مدمج. قد يتضخم المجموع لأن القياس تكرر فحسب.
left <- data.frame(id = c("a", "b", "c"), value = c(1, 2, 3), stringsAsFactors = FALSE)
right <- data.frame(id = c("a", "a", "b"), tag = c("x", "y", "z"), stringsAsFactors = FALSE)
joined <- merge(left, right, by = "id", all.x = TRUE, sort = TRUE)
cat("left rows=", nrow(left), "; joined rows=", nrow(joined), "\n", sep = "")
cat("a rows=", sum(joined$id == "a"), "; unmatched=", sum(is.na(joined$tag)), "\n", sep = "")
left rows=3; joined rows=4
a rows=2; unmatched=1
تنتج المفاتيح اليمنى المكررة مطابقات متعددة؛ وحفظ مفاتيح اليسار لا يحفظ عدد صفوفه.
تحتاج إعادة التشكيل قرار تفرد
قد يحتوي الجدول الطويل id وoccasion وvalue. يفترض إنشاء عمود لكل مناسبة قيمة واحدة لكل زوج هوية ومناسبة. إذا تكرر الزوج فحدد هل هو خطأ أم تكرار مشروع أم يحتاج تجميعاً. اختيار أول صف بصمت سياسة بيانات، وليس تشكيلاً محايداً. وقد ينشئ التوسيع تركيبات لم ترصد؛ فلا تصبح أصفاراً تلقائياً. وحد الوحدات بين أعمدة القيم وميز الغياب البنيوي عن القياس المفقود إذا تطلبت المهمة.
يساعد الترتيب والثوابت في المراجعة
قد ترتب merge المفاتيح، ولا يضمن منع الترتيب حفظ ترتيب المدخل. احفظ هوية صف واسترجع الترتيب المقصود صراحة عند حاجة المحاذاة. افحص التفرد والتغطية والأعداد وحفظ المجاميع المبرر وروابط معلومة. لا يكفي فحص واحد؛ فقد يخفي مجموع ثابت وسوماً متبادلة، وتخفي مفاتيح صحيحة تحويل وحدة خاطئاً. تبقى الأمثلة في الذاكرة بجداول اصطناعية ونتائج مشتقة دون قاعدة بيانات أو مصدر خارجي أو محلل R أو تنفيذها.
الأخطاء الشائعة وإصلاحها
ضاعف الربط مجموعاً دون توقع
- لماذا يحدث؟
- كررت المطابقات القياسات بسبب المفاتيح المتعددة.
- كيف تصلحه؟
- افحص التعددية وأصلحها أو جمعها وفق المستوى المطلوب.
- كيف تتجنب تكراره؟
- توقع العدد وافحص تعداد كل مفتاح قبل الدمج.
غير عمود مشترك جديد نتيجة الربط
- لماذا يحدث؟
- توسع المفتاح الافتراضي الضمني.
- كيف تصلحه؟
- صرح بـ by أو by.x وby.y.
- كيف تتجنب تكراره؟
- اجعل المفاتيح جزءاً من عقد المخطط.
اختير قياس مكرر واحد أثناء التوسيع
- لماذا يحدث؟
- لم يتفرد زوج الهوية والمناسبة.
- كيف تصلحه؟
- حدد معالجة المكررات قبل التشكيل.
- كيف تتجنب تكراره؟
- افحص تفرد المفتاح المركب المقصود.
اختبر فهمك
1. صفان للمفتاح a يساراً وثلاثة يميناً؛ كم صفاً ينتج الدمج؟
اعرض الحل المشروح
تسهم جميع الأزواج المتطابقة فينتج اثنان في ثلاثة، أي ستة. إذا أردت صفاً لكل مشاهدة يسارية فأصلح علاقة اليمين أو جمعها بقاعدة مبررة أولاً. لا يمنع الربط اليساري وحده المضاعفة.
2. للمجموعة a قيمة 2 وللمجموعة b ثلاث قيم 8. قارن المتوسط العام ومتوسط المتوسطين.
اعرض الحل المشروح
المتوسط العام 26/4=6.5، ومتوسطا المجموعتين اثنان وثمانية ومتوسطهما خمسة. يجيبان عن وزنين مختلفين. اعرض الأعداد واختر المقام وفق الكمية المراد تقديرها على مستوى المشاهدة أو المجموعة.
أهم ما تعلمته
- يحدد المستوى وتعددية المفاتيح معنى التحويل.
- قد يحفظ الربط المفاتيح ويضاعف الصفوف.
- اجمع فحوص الأعداد والثوابت والروابط المعروفة.