برمجة R / دليل حلول تحريري

شخص مضاعفة الربط وفقد المشاهدات

دقق المفاتيح والأعداد والتطابق والترتيب قبل الثقة بجدول مدمج.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى

قاعدة معرفة للقراءة فقط · بلا تعليقات عامة

تعرّف على الأعراض

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

افهم الأسباب المحتملة

  • تشمل الأسباب مطابقات متكررة ومفاتيح ضمنية واستبعاد ربط داخلي وتصادم التنظيف وقواعد مفاتيح مفقودة والاعتماد على ترتيب متغير. قد يخفي عدد صحيح ظاهراً استبدال المشاهدات أو ترتيبها.

1. اكتب العلاقة المقصودة

حدد معنى صف اليسار وهل يحتاج اليمين صفاً لكل مفتاح أو وسوماً متعددة مشروعة أو قياسات مكررة. ليست علاقة واحد بمتعدد خطأ دائماً، لكنها قد لا تلائم ملخص عنصر واحد. حدد مفتاح الوقت أو التكرار المركب. افحص التكرار والفقد في الجانبين واحفظ الخام والمطبع عند التنظيف. لا تستخدم unique على الناتج كإصلاح عام؛ فقد يحذف مشاهدات مشروعة ويبقي العلاقة الخاطئة.

2. توقع المطابقات وصالح المجاميع

للعنصر a في المثال وسمان فتظهر مدته مرتين. يرتفع المجموع من ثلاثين إلى أربعين دون خطأ جمع. يسهم كل مفتاح بحاصل عددَي صفوفه في الربط المعتاد. قارن التوقع بالناتج وافصل المفاتيح غير المتطابقة. إذا طلبت صفاً لكل عنصر فحدد تجميع اليمين أو سياسة وسم مختار أو تمثيلاً علاقياً منفصلاً قبل الربط. لا يفرض حفظ اليسار التفرد وحده.

r برنامج توضيحي بلغة R الأساسية؛ لم تتوفر بيئة R أثناء المراجعة
items <- data.frame(id = c("a", "b"), minutes = c(10, 20), stringsAsFactors = FALSE)
labels <- data.frame(id = c("a", "a", "b"), label = c("x", "y", "z"), stringsAsFactors = FALSE)
joined <- merge(items, labels, by = "id", all.x = TRUE)
cat("before rows=", nrow(items), "; after rows=", nrow(joined), "\n", sep = "")
cat("before total=", sum(items$minutes), "; after total=", sum(joined$minutes), "\n", sep = "")
cat("duplicate label keys=", anyDuplicated(labels$id) > 0L, "\n", sep = "")
الناتج المتوقع
before rows=2; after rows=3
before total=30; after total=40
duplicate label keys=TRUE

كرر الربط العنصر ذي العشر دقائق لمطابقتين؛ فالتغير أثر تعددية لا خطأ حساب.

3. دقق التغطية والمحاذاة

صرح بـ by أو by.x وby.y بدلاً من جميع الأسماء المشتركة. حدد حفظ غير المتطابق وافحصه قبل الاستبعاد. قد يدمج التطبيع هويات مختلفة؛ فاختبر التصادم بعد الفراغ أو تغيير الحروف. قد تغير merge الترتيب؛ فاحفظ هوية صف يساري للمصفوفات اللاحقة. قد تختلف قواعد المفتاح المفقود عن أداة أخرى، فاختر سياسة مقصودة وافحصها.

4. تحقق من العقد المصحح

افحص التفرد أو التعددية المطلوبة وصالح الأعداد وروابط الهوية والقيمة المعلومة. لا تطلب حفظ المجموع إلا إذا وجب حفظه للعلاقة؛ فلواحد بمتعدد مستوى آخر. اختبر عدم تطابق الطرفين والتكرار والفقد والعنصر المفرد. افحص تفرد الهوية والمناسبة قبل التوسيع اللاحق. وثق العلاقة كيلا يعيد تحديث مخطط تعريفها بصمت.

تحقق من نجاح الإصلاح

يتطلب التحقق عدداً متوقعاً وسياسة عدم التطابق ومحاذاة صحيحة وملخصاً عند مستواه المطلوب. الخرج مشتق؛ ولم تنفذ merge أو قاعدة بيانات أو مصدر خارجي أو اختبار بيئة R أثناء المراجعة.

امنع تكرار المشكلة

  • اجعل المفتاح والتعددية متطلبات مخطط. افحص تصادم التطبيع وتفرد اليمين عند الحاجة، واحفظ هوية الصف عبر الترتيب، وراجع تغير المفتاح أو المستوى قبل قبول فرق مقياس.

المراجع الرسمية