برمجة R / أسس اللغة والبيانات / الدرس 6
استيراد النصوص والتواريخ وعقود البيانات
حول النص إلى مشاهدات محددة النوع دون إخفاء الفقد أو الهوية أو تفسير الوقت.
في هذه الصفحة
أهداف الدرس
- التصريح بأنواع الأعمدة ورموز الفقد.
- فحص الأسماء والمعرفات والأعداد المستوردة.
- فصل التاريخ التقويمي والطابع الزمني وتطبيع النص.
للنص افتراضات تحليل
يحتوي CSV رموزاً وفق قواعد الفصل والاقتباس، لا قياسات محددة النوع بذاتها. تختلف فاصلة داخل اقتباس عن فاصل الأعمدة، وقد يغير الترميز واصطلاح العشري المعنى. حدد الرأس وترتيب الأعمدة أو أسماءها والوحدات والفقد وصيغة الهوية. تفيد الاستدلالات الآلية للاستكشاف لكن لا تجعلها تحدد المخطط المراجع عرضاً. احفظ مثال نص في الذاكرة لفحص المحلل دون بيانات خاصة أو ملفات أو خدمات. قبول النص لا يثبت صحة معنى القيم الناتجة.
استورد بمخطط ضيق صريح
يستعمل المثال read.csv على نص مضمّن بمعرف نصي ومدة عددية وحالة نصية. تصبح المدة الفارغة مفقودة وفق na.strings المختار، بينما تبقى كلمة missing في الحالة نصاً عادياً. يفحص التحقق أسماء الأعمدة قبل الملخص. يجب أيضاً فحص تفرد المعرف أو تكراره المقصود وعدد الصفوف والمجال واتساق الحالة والقيمة. لا تسمح باستدلال مريح يمحو أصفار المعرف أو يحول القياسات إلى نص دون ملاحظة.
csv <- "id,minutes,status\na,10,ok\nb,,missing\nc,30,ok"
records <- read.csv(text = csv, colClasses = c("character", "numeric", "character"),
na.strings = "", stringsAsFactors = FALSE)
stopifnot(identical(names(records), c("id", "minutes", "status")))
cat("rows=", nrow(records), "; missing=", sum(is.na(records$minutes)), "\n", sep = "")
cat("observed mean=", mean(records$minutes, na.rm = TRUE), "\n", sep = "")
rows=3; missing=1
observed mean=20
CSV نص داخل الذاكرة بأنواع أعمدة وقاعدة فقد صريحتين؛ ولا يقرأ ملفاً أو خدمة.
قد تغير رموز الفقد المجتمع
تختلف معاملة الفراغ و"NA" و"null" والصفر كفقد. قد يكون الرمز فئة أو هوية صالحة في عمود وعلامة فقد في آخر. احسب الفقد بعد التحليل وقارنه بالصفوف المقدمة. حدد هل النص العددي المشوه خطأ أو صف معزول أو فقد موثق؛ ولا تحذفه بصمت ثم تعرض متوسطاً أنظف. احفظ الرموز الأصلية للتشخيص عند السماح. يستخدم المتوسط هنا مدتين مرصودتين، ولا يقدر القيمة الغائبة أو يبرر استنتاجاً مجتمعياً.
للتاريخ والطابع الزمني عقدان مختلفان
يمثل Date يوماً تقويمياً، ويمثل الطابع الزمني لحظة تفسر بقواعد منطقة زمنية وتقويم. يحلل المثال وسوم سنة وشهر ويوم صراحة ويحصل على فرق ثلاثة أيام، دون تغيرات توقيت صيفي. حدد للطوابع الفعلية منطقة المصدر والعرض وسياسة الوقت المحلي الملتبس ووحدات الفرق. لا يساوي تنسيق العرض تغيير المعنى الداخلي. قد يعطي النص غير الصالح قيمة مفقودة؛ فتحقق من نتيجة التحليل بدلاً من افتراض مطابقة كل وسم للصيغة.
labels <- c("2026-01-02", "2026-01-05")
dates <- as.Date(labels, format = "%Y-%m-%d")
stopifnot(!anyNA(dates))
cat("gap days=", as.integer(dates[2] - dates[1]), "\n", sep = "")
name <- " sample-a "
cat("trimmed=", trimws(name), "\n", sep = "")
gap days=3
trimmed=sample-a
تحويل التاريخ وتنقية الفراغ عمليتان صريحتان، ولا يفسر المثال طوابع زمنية مرتبطة بمنطقة.
طبع النص وفق قاعدة هوية مبررة
قد يصلح حذف الفراغ المحيط معرفاً عرضياً كما في المثال، وقد يدمج وسوماً خاماً مختلفة؛ فافحص التصادم بعده. تحتاج حالة الأحرف وتطبيع Unicode واستبدال الفواصل وحذف الترقيم سياسات مستقلة وليست تنظيفاً عاماً. رتب التحويلات ووثقها لتفسير تكوين مفتاح الربط. وعند التصدير حدد الاقتباس والفقد والترميز والأعمدة. تبقى أمثلة المساق في الذاكرة بمخرجات مشتقة؛ ولم ينفذ محلل R أو فحص محلي خاص أثناء المراجعة.
الأخطاء الشائعة وإصلاحها
فقدت المعرفات الأصفار البادئة
- لماذا يحدث؟
- فسر استدلال النوع الوسوم كأعداد.
- كيف تصلحه؟
- صرح بعمود الهوية كنص قبل الاستيراد.
- كيف تتجنب تكراره؟
- افحص معرفات ممثلة وصيغتها المطلوبة.
تحسن المتوسط واختفت صفوف كثيرة
- لماذا يحدث؟
- استبعدت رموز مشوهة أو مفقودة بصمت.
- كيف تصلحه؟
- احسب المدخل والمرفوض والباقي بسياسة صريحة.
- كيف تتجنب تكراره؟
- اعرض فشل التحليل والفقد قبل التجميع.
اختلط فرق الأيام بساعات زمن منقضٍ
- لماذا يحدث؟
- مُزج التاريخ التقويمي بلحظات ذات منطقة زمنية.
- كيف تصلحه؟
- اختر التمثيل الصحيح وصرح بالوحدات.
- كيف تتجنب تكراره؟
- اختبر الحدود وتحولات المنطقة المناسبة منفصلة.
اختبر فهمك
1. لماذا احتفظ المثال بثلاثة صفوف وحسب متوسط مدتين فقط؟
اعرض الحل المشروح
تحول الفراغ إلى قيمة عددية مفقودة دون حذف الصف. يستخدم na.rm=TRUE العشرة والثلاثين فيعطي عشرين. يبقى عدد الصفوف ثلاثة والفقد واحداً؛ ويجب عرضهما مع الملخص.
2. المعرفان الخامان "a" و" a ". ما الذي يلي حذف الفراغ؟
اعرض الحل المشروح
افحص تصادم المفتاحين وهل يمثلان الكيان نفسه. إن كانا كذلك طبق سياسة التكرار أو التجميع؛ وإلا فقد دمر التحويل فرقاً مهماً ويجب تعديله. لا يثبت نجاح تحويل النص صحة الهوية.
أهم ما تعلمته
- التحليل عقد بيانات محدد النوع.
- أظهر أعداد الفقد والرفض.
- للتواريخ واللحظات والهويات المطبعة معان مختلفة.