البرمجة الإحصائيةتحليل البيانات بلغة R

R: كيفية استخدام جملة If مع شروط متعددة

دليل أكاديمي شامل ومفصل حول كيفية صياغة وتطبيق الجمل الشرطية المركبة والمتعددة الشروط في لغة R باستخدام المعاملات المنطقية والدوال الموجهة.

تاريخ النشر

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

إن الانتقال من فهم الشروط البسيطة ذات المعيار الواحد إلى استيعاب وتطبيق الجمل الشرطية متعددة الشروط والمعايير يُعد نقلة نوعية في الممارسة البرمجية لمحلل البيانات في بيئة R. تتطلب المعالجة الشرطية المتقدمة إدراكًا عميقًا للفلسفة التصميمية للغة R، لا سيما التمييز الجوهري بين المعالجة القياسية المفردة (Scalar Execution) والمعالجة المتجهية الشاملة (Vectorized Execution). هذا التمييز يفرض استخدام معاملات منطقية متخصصة تضمن تقييم المتجهات دون الوقوع في أخطاء برمجية خفية قد تشوه النتائج الإحصائية أو تؤدي إلى استنتاجات خاطئة.

يتناول هذا المرجع الأكاديمي الشامل دراسة معمقة وتطبيقية لكيفية صياغة واستخدام جملة if ومشتقاتها وبدائلها الحديثة عند التعامل مع شروط مركبة ومتعددة داخل لغة R. سنستعرض عبر هذا الدليل الأسس النظرية للمنطق البولياني، والفروق الدقيقة بين المعاملات المنطقية المتجهية والقياسية، والآليات المثلى للتعامل مع الشروط المتداخلة، ومعالجة القيم المفقودة، وصولًا إلى البدائل الحديثة عالية الأداء مثل دالة case_when من حزمة dplyr ودالة fifelse من حزمة data.table، مدعومة بأفضل الممارسات البرمجية وتطبيقات عملية واقعية في مجالات الإحصاء والنمذجة الرياضية.

1. مقدمة تأصيلية للبنى الشرطية وأهميتها في التحليل الإحصائي بلغة R

1.1 مفهوم المنطق الشرطي في المعالجة البيانية

يمثل المنطق الشرطي في علوم البيانات الآلية الحسابية التي تمكّن البرمجيات من تقييم حالة معينة وتحديد السلوك الإجرائي التالي بناءً على صحة تلك الحالة من عدمها. في سياق لغة R، التي صُممت أساسًا كبيئة تفاعلية للحوسبة الإحصائية والرسوميات، يأخذ المنطق الشرطي دورًا محوريًا يتجاوز التحكم التقليدي في تدفق التعليمات البرمجية ليشمل معالجة مصفوفات وأطر البيانات الضخمة وتكييفها وفق نماذج رياضية محددة. إن عملية اتخاذ القرار الآلي تتيح للباحث تحويل الشروط النظرية للبحث العلمي إلى قواعد إجرائية دقيقة تُطبق آليًا على آلاف أو ملايين السجلات دون تدخل يدوي.

تتجلى أهمية المنطق الشرطي متعدد الشروط في مراحل تنظيف البيانات وتجهيزها (Data Cleansing and Preprocessing)؛ حيث نادرًا ما تكون المتغيرات الواقعية نقية وبسيطة. فعلى سبيل المثال، يتطلب تصنيف الحالة الصحية لمريض ما فحصًا متزامنًا لمستويات ضغط الدم، ومعدل السكر التراكمي، والمؤشرات الحيوية الأخرى، بالإضافة إلى المتغيرات الديموغرافية كالعمر والجنس. هنا تصبح الجمل الشرطية المركبة هي الأداة الرياضية القادرة على التعبير عن هذا التعقيد، من خلال ربط المتغيرات المختلفة في صيغ منطقية تنتج متغيرات تصنيفية جديدة تُستخدم لاحقًا في النمذجة التنبؤية واختبار الفرضيات.

علاوة على ذلك، يتيح المنطق الشرطي للباحثين بناء المؤشرات المركبة (Composite Indices) التي تُستخدم بكثرة في العلوم الاقتصادية والاجتماعية والبيئية. يتم من خلال هذه الشروط دمج معايير متعددة ذات مقاييس مختلفة في مؤشر موحد يعكس ظاهرة معقدة، مثل تحديد مؤشر الفقر متعدد الأبعاد أو درجات جودة الأداء المؤسسي. إن صياغة هذه الشروط بصورة رياضية محكمة يضمن موثوقية النتائج الإحصائية وتكراريتها (Reproducibility)، وهو ما يمثل جوهر المنهج العلمي في التحليل الإحصائي الحديث.

1.2 تطور استخدام العبارات الشرطية في بيئة R

شهدت لغة R منذ نشأتها المبكرة، امتدادًا للغة S الإحصائية، تطورًا بنيويًا ملحوظًا في كيفية التعامل مع الشروط المنطقية. في البدايات، كان الاعتماد شبه كامل على البنى الإجرائية التقليدية المشابهة لتلك الموجودة في لغات البرمجة العامة مثل C وFortran، حيث تُستخدم جمل if وelse ضمن حلقات تكرارية لفحص كل عنصر على حدة. إلا أن الطبيعة المتجهة بطبيعتها للعمليات الإحصائية أظهرت سريعًا عدم كفاءة هذا النمط التقليدي، مما دفع مطوري اللغة إلى ابتكار حلول متجهية مدمجة تستغل قدرة المعالج على تطبيق العمليات على المتجهات ككتلة واحدة.

أدى هذا التطور إلى ظهور دوال متجهية متخصصة، مثل دالة ifelse القياسية، والتي شكلت قفزة نوعية في سرعة معالجة أطر البيانات (Data Frames). ومع ازدياد حجم البيانات وتعقد الهياكل الإحصائية في عصر البيانات الضخمة، ظهرت منظومة الحزم الحديثة مثل Tidyverse وما تتضمنه من أدوات متقدمة مثل حزمة dplyr، بالإضافة إلى حزمة data.table فائقة السرعة. قدمت هذه الحزم صياغات شرطية حديثة تجاوزت القيود الوظيفية للدوال التقليدية، محققة توازنًا مثاليًا بين سرعة التنفيذ الحسابي والمقروئية العالية للكود البرمجي.

يتطلب التحليل الإحصائي المعاصر فهمًا نقديًا لمعايير اختيار الأسلوب الشرطي المناسب. لم يعد الأمر مقتصرًا على كتابة كود يؤدي الغرض، بل أصبح الاختيار مرتبطًا بحجم البيانات، وطبيعة توزيع الذاكرة (Memory Footprint)، ونوع المتغيرات المعالجة (رقمية، عاملية، نصية). هذا التباين البنيوي بين الأساليب الكلاسيكية والحديثة يفرض على الباحث المتخصص إتقان كافة الأنماط الشرطية لمعرفة متى يلجأ إلى البنى البسيطة ومتى يعتمد على الحلول المتجهية عالية الأداء لضمان كفاءة التحليل ودقة المخرجات.

2. التمييز الدلالي والتركيبي بين if-else التقليدية ودالة ifelse() المتجهية

2.1 بنية جملة if-else الكلاسيكية ومحدوديتها

تمثل جملة if-else الكلاسيكية البنية الأساسية لاتخاذ القرار في البرمجة الإجرائية داخل R. تعتمد هذه البنية على التركيب النحوي الذي يبدأ بالكلمة المحجوزة if متبوعة بالشرط المنطقي بين قوسين دائريين، ثم كتلة التعليمات البرمجية المحاطة بأقواس معقوفة، يليها اختياريًا فرع else الذي يحتوي على التعليمات البديلة في حال عدم تحقق الشرط. هذا النمط مصمم حصريًا لتقييم شروط وحيدة القيمة (Scalar Conditions)، أي الشروط التي ينتج عن تقييمها قيمة منطقية واحدة إما صحيحة تمامًا أو خاطئة تمامًا.

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

ومع ذلك، تظل جملة if-else التقليدية أداة لا غنى عنها في مجالات برمجية محددة داخل R، لا سيما في كتابة الدوال المخصصة وتوجيه تدفق البرامج التنفيذية. تُستخدم هذه البنية بكفاءة للتحقق من صحة المدخلات العامة للدوال، أو فحص نوع كائن البيانات قبل البدء في معالجته، أو اتخاذ قرارات عامة تتعلق بالمسار الحسابي للنموذج الإحصائي (مثل اختيار خوارزمية التحسين المناسبة بناءً على حجم العينة الإجمالي)، حيث يكون الشرط في هذه الحالات مقياسًا واحدًا يعبر عن خاصية شاملة للكائن وليس متجهًا لعناصر فردية.

2.2 دالة ifelse() كحل متجهي شامل للبيانات المجدولة

لتجاوز القصور الجوهري للبنية الكلاسيكية في معالجة المتجهات، تقدم لغة R دالة ifelse المتجهية المدمجة. تأخذ هذه الدالة صيغة عامة تتألف من ثلاثة وسائط رئيسية: الأول هو شرط الاختبار المنطقي، والثاني هو القيمة أو التعبير المُراد إرجاعه في حالة تحقق الشرط، والثالث هو القيمة أو التعبير المُراد إرجاعه في حالة عدم تحقق الشرط. تتميز هذه الدالة بقدرتها البنيوية على تقييم شرط الاختبار على كل عنصر من عناصر المتجه المدخل بشكل متزامن، وإرجاع متجه جديد بنفس طول المتجه الأصلي.

تعمل الآلية الداخلية لدالة ifelse وفق مبدأ التقييم العنصري (Element-wise Evaluation)؛ حيث تقوم بمقارنة العناصر المتناظرة وتطبيق التفرع المناسب لكل عنصر على حدة. هذه الخاصية تجعلها الأداة المثالية لإنشاء وتعديل الأعمدة داخل أطر البيانات والمصفوفات الإحصائية. فعندما يرغب المحلل في تصنيف متغير مستمر، مثل تقسيم درجات الطلاب إلى فئتين، تتولى دالة ifelse مسح كامل العمود وتطبيق القاعدة المنطقية وتوليد عمود النتائج بخطوة برمجية واحدة ذات كفاءة حسابية ملموسة مقارنة بالحلقات التكرارية التقليدية.

على الرغم من القوة التعبيرية لدالة ifelse، إلا أن استخدامها يتطلب الحذر فيما يتعلق بأنواع البيانات المسترجعة وخصائصها الإحصائية. فالدالة تقوم أحيانًا بإسقاط بعض الصفات الخاصة بالكائنات المعقدة مثل التواريخ أو العوامل الفئوية (Factors)، محولة إياها إلى أشكالها الرقمية الأساسية. لذلك، يجب على المحلل التأكد من توافق نوع البيانات الناتج مع متطلبات التحليل اللاحق، أو اللجوء إلى البدائل المتقدمة التي تحافظ بصرامة على سمات البيانات عند التعامل مع هياكل إحصائية حساسة.

3. المعاملات المنطقية في R: الفروق الدقيقة بين العمليات القياسية والمتجهية

3.1 معامل العطف المنطقي AND: التمييز بين (&) و (&&)

يعد فهم الفارق الجوهري بين معاملي العطف المنطقي المزدوج والفردي في لغة R من أهم المتطلبات البرمجية لضمان دقة المعالجة الإحصائية. يُعرف المعامل الأحادي المنفرد بأنه معامل العطف المتجهي (Vectorized AND)؛ وتتمثل وظيفته في فحص شرطين عبر متجهين متناظرين في الطول، وتطبيق المقارنة المنطقية على كل زوج من العناصر المتقابلة بصورة مستقلة، لينتج عن ذلك متجه منطقي يحتوي على قيم متطابقة الطول توضح تحقق الشرطين معًا لكل عنصر على حدة.

في المقابل، يمثل المعامل المزدوج معامل العطف القياسي القصير (Short-circuit Scalar AND). يتميز هذا المعامل بخاصيتين رئيستين: الأولى أنه لا يتعامل إلا مع قيم مفردة، فإذا تم تمرير متجهين له فإنه يقيم فقط العنصر الأول من كل متجه. والخاصية الثانية هي خاصية التقصير في التقييم؛ حيث يقوم المفسر بفحص الشرط الأول، فإذا وجده غير متحقق، فإنه يتوقف فورًا ويقرر أن النتيجة العامة غير متحققة دون تكبد عناء تقييم الشرط الثاني، مما يوفر وقت المعالجة في الشروط المعقدة التي تعتمد على عمليات حسابية مكلفة.

يؤدي الخلط بين هذين المعاملين إلى أخطاء برمجية جسيمة يصعب اكتشافها في التحليلات الإحصائية. فعند استخدام المعامل المزدوج داخل دوال متجهية مثل ifelse أو عند تصفية صفوف أطر البيانات، لن يتم تطبيق الشرط المركب إلا على الصف الأول فقط، وسيتم تعميم نتيجة هذا الصف الواحد على كامل الجدول، مما يقود إلى تصفية خاطئة للبيانات أو تشويه للمتغيرات المصنفة. لذلك، يُعد المعامل الأحادي هو الخيار الحصري لمعالجة أعمدة البيانات، بينما يُحجز المعامل المزدوج للتحكم في تدفق جمل if الكلاسيكية.

3.2 معامل الفصل المنطقي OR: التمييز بين (|) و (||)

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

أما معامل الفصل القياسي المزدوج، فهو مصمم للعمل مع القيم القياسية الفردية ويعتمد أيضًا على منطق التقصير في التقييم. عند استخدام هذا المعامل، يقوم مفسر R بتقييم الشرط الأول؛ فإذا كان الشرط الأول متحققًا، فإنه يعتبر النتيجة العامة صحيحة فورًا ولا يقوم بتقييم الشرط الثاني إطلاقًا، لأن تحقق طرف واحد في المنطق البولياني كافٍ لإثبات صحة العبارة المفصولة بأكملها. هذا الأسلوب بالغ الأهمية عند فحص وجود كائن في الذاكرة قبل محاولة قراءة محتواه، لتفادي توقف البرنامج بسبب أخطاء عدم العثور على الكائنات.

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

3.3 معامل النفي المنطقي (!) والأسبقية الرياضية للعمليات

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

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

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

4. تطبيق المعامل المنطقي OR (|) لبناء شروط بديلة داخل أطر البيانات

4.1 التحليل النظري لصيغة الشرط المتساهل (Disjunction)

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

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

يوضح الجدول المنطقي التالي مخرجات الفصل المتجهي في R عند دمج حالتين منطقيتين:

  • تحقق الشرط الأول مع تحقق الشرط الثاني ينتج قيمة صحيحة تمامًا.
  • تحقق الشرط الأول مع إخفاق الشرط الثاني ينتج قيمة صحيحة تمامًا.
  • إخفاق الشرط الأول مع تحقق الشرط الثاني ينتج قيمة صحيحة تمامًا.
  • إخفاق كلا الشرطين معًا ينتج القيمة الخاطئة الوحيدة.

4.2 إنشاء أعمدة تصنيفية اعتماداً على شروط رقمية منفصلة

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

يتم تطبيق هذا الإجراء عبر تمرير التعبير المنطقي المتجهي إلى دالة ifelse؛ حيث يُكتب الشرط بمقارنة عمود النقاط بالقيمة 20 متبوعًا بمعامل الفصل الفردي ومقارنة عمود التمريرات بالقيمة 8. يقوم مفسر R بمقارنة كل صف على حدة، وإذا وجد أن اللاعب حقق أيًا من هذين الإنجازين، يتم إسناد القيمة الوصفية “متميز” للعمود الجديد، في حين يحصل اللاعب الذي أخفق في تحقيق كلا المعيارين على القيمة “عادي”. هذه العملية تتسم بالكفاءة والسرعة العالية لأنها تُنفذ متجهيًا دون الحاجة لكتابة حلقات تكرارية معقدة.

تتطلب الممارسة الإحصائية الرصينة التحقق من سلامة المخرجات الناتجة عن هذه العمليات الشرطية. يتم ذلك من خلال فحص الجداول المتقاطعة (Cross-tabulations) بين المتغيرات الأصلية والمتغير التصنيفي الجديد، للتأكد من أن جميع الحالات التي تجاوزت إحدى العتبات قد صُنفت بالفعل بالشكل الصحيح، وأن الحالات المصنفة كأداء عادي لم تتجاوز أيًا من العتبتين، مما يعزز الثقة في سلامة الكود البرمجي وجودة البيانات المجهزة للتحليل اللاحق.

4.3 الدمج بين الشروط الرقمية والنصية باستخدام OR

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

للتعامل مع هذه الحالات المركبة في بيئة R، يتم الدمج بين المعاملات المنطقية والدوال النصية المتخصصة. تُستخدم دالة grepl للبحث عن أنماط نصية معينة داخل الأعمدة الحرفية، أو يُستخدم عامل الانتماء المنطقي للمجموعات لفحص ما إذا كانت قيمة المتغير النصي تقع ضمن قائمة محددة من الفئات المستهدفة. يتم بعد ذلك ربط هذا الشرط النصي بالشرط الرقمي باستخدام معامل الفصل المتجهي، ليقوم المفسر بتقييم التوافق الكلي لكل صف داخل إطار البيانات بصورة موحدة.

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

5. تطبيق المعامل المنطقي AND (&) لفرض معايير تقييم صارمة ومتزامنة

5.1 التحليل النظري لصيغة الشرط التزامني (Conjunction)

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

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

يوضح جدول الحقيقة التالي لمعامل العطف المتجهي في R كيفية حسم النتائج المنطقية بدقة:

  • تحقق الشرط الأول مع تحقق الشرط الثاني ينتج القيمة الصحيحة الوحيدة.
  • تحقق الشرط الأول مع إخفاق الشرط الثاني ينتج قيمة خاطئة.
  • إخفاق الشرط الأول مع تحقق الشرط الثاني ينتج قيمة خاطئة.
  • إخفاق كلا الشرطين معًا ينتج قيمة خاطئة تمامًا.

5.2 بناء متغيرات جديدة تتطلب استيفاء عتبات قياسية متعددة

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

في بيئة R، يتم تطبيق ذلك عبر دالة ifelse المتجهية باستخدام معامل العطف الفردي للربط بين الشروط الرقمية المختلفة. يتم فحص كل صف في إطار البيانات؛ بحيث يُمنح الموظف القيمة “استثنائي” إذا وفقط إذا كانت مبيعاته ورضا عملائه ونسبة التزامه أعلى من العتبات المطلوبة في آن واحد. أما إذا أخل بأي معيار منها، فيتم إسناد تصنيف آخر مثل “أداء اعتيادي” أو “يحتاج لتطوير”. هذا الفصل الحاسم يضمن تطبيق سياسة تقييم موحدة وعادلة تخلو من الاستثناءات غير المبرمجة.

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

5.3 الاشتراط المتعدد عبر أكثر من متغيرين إحصائيين

تتسع المعالجة الشرطية في المشروعات التحليلية الكبرى لتشمل ثلاثة متغيرات إحصائية أو أكثر في صياغة منطقية تتابعية واحدة. على سبيل المثال، قد يتطلب تصنيف جودة المياه البيئية فحصًا متزامنًا لمستويات الحموضة (pH)، والأكسجين المذاب، ودرجة الحرارة، وتركيز المعادن الثقيلة. كتابة شرط يجمع هذه المعايير الأربعة دفعة واحدة باستخدام معاملات العطف المتتالية يتيح تحديد العينات التي تطابق المعايير البيئية القياسية الصارمة بمستوى عالٍ من الدقة العلمية.

لضمان مقروئية الكود البرمجي وسهولة صيانته عند تمديد الشروط لتشمل متغيرات متعددة، يُنصح بتنسيق الأكواد بطريقة عمودية واضحة، مع وضع كل شرط فرعي في سطر مستقل واستخدام المسافات البادئة المناسبة. إن كتابة الشروط الممتدة في سطر أفقي واحد يجعل من الصعب اكتشاف الأخطاء المطبعية أو المنطقية، ويعقد مهمة مراجعة الكود من قِبل باحثين آخرين ضمن فرق العمل البحثية المشتركة.

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

6. دمج المعاملات المنطقية المتباينة وإدارة الأسبقية المنطقية المعقدة

6.1 قواعد الأسبقية المنطقية واستخدام الأقواس التنظيمية

عند بناء شروط تحليلية متقدمة تجمع بين العطف المنطقي AND والفصل المنطقي OR في نفس العبارة البرمجية، تصبح قواعد الأسبقية المنطقية هي الحاكم المطلق لتحديد الكيفية التي سيفسر بها مترجم R هذه التعبيرات. في المعيار الرياضي للغة R، يمتلك معامل العطف المتجهي أسبقية تنفيذ أعلى من معامل الفصل المتجهي؛ مما يعني أن البرنامج سيقوم تلقائيًا بتجميع وتقييم الشروط المربوطة بمعامل العطف أولاً، ثم يجري عملية الفصل مع بقية الأطراف، وهو ما قد لا يتوافق بالضرورة مع القصد التحليلي للباحث.

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

لتوضيح ذلك، فإن التعبير غير المقيد بأقواس قد يربط شرطين وسطيين معًا بالعطف بينما كان هدف الباحث هو فحص شرط أساسي متزامن مع تحقق أحد خيارين بديلين. إن الاستخدام الدقيق والممنهج للأقواس لا يضمن فقط سلامة المخرجات وصحتها الرياضية، بل يرفع أيضًا من قابلية قراءة الشيفرة البرمجية ويجعل النوايا التحليلية للباحث واضحة وجلية لأي مراجع خارجي للكود الإحصائي.

6.2 صياغة الشروط المركبة: نمط (A AND B) OR C

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

تُكتب هذه الصيغة في R بوضع الشرطين الأول والثاني داخل قوسين تجمعهما علامة العطف المتجهية، ثم يوضع معامل الفصل المتجهي متبوعًا بالشرط الثالث خارج القوسين. يضمن هذا البناء التركيبي أن المشاهدة الإحصائية ستنال التصنيف الإيجابي إذا حققت التركيبة المزدوجة معًا، أو إذا حققت المعيار المنفصل بمفرده، بينما تُستبعد المشاهدات التي تفشل في تحقيق المعيار المنفصل وتخفق في أحد شطري المعيار المزدوج في نفس الوقت.

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

6.3 صياغة الشروط المركبة: نمط A AND (B OR C)

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

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

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

7. التعامل مع الشروط المتعددة المتداخلة (Nested ifelse Statements)

7.1 بنية دالة ifelse() المتداخلة وتعدد المستويات التصنيفية

عندما تتجاوز متطلبات التحليل الإحصائي التصنيف الثنائي البسيط إلى تقسيم المشاهدات إلى ثلاثة مستويات تصنيفية أو أكثر، تبرز بنية دالة ifelse المتداخلة كحل كلاسيكي في لغة R. تعتمد هذه التقنية على مبدأ الاستبدال المتسلسل؛ حيث يتم وضع دالة ifelse ثانية كاملة الأركان داخل الوسيط الثالث (فرع الإخفاق) للدالة الأولى. وبالمثل، يمكن إدراج دالة ثالثة داخل فرع الإخفاق للدالة الثانية، مما ينشئ تسلسلًا هرميًا لمعالجة الشروط وتوزيع المشاهدات على فئات متعددة مثل: “مرتفع”، و”متوسط”، و”منخفض”.

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

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

7.2 التحكم في الشروط الحدية والمدى الرقمي (Range Checking)

يعد تقسيم المتغيرات الكمية المستمرة إلى فئات رتبية متمايزة (Binning / Discretization) التطبيق الأبرز للتداخل الشرطي في الإحصاء التطبيقي. عند معالجة متغيرات مثل الفئات العمرية، أو مستويات الدخل، أو مؤشرات كتلة الجسم، يحتاج المحلل إلى التأكد من أن كل قيمة تقع بدقة داخل المدى الرقمي المخصص لها دون حدوث تداخل بين الفترات الإحصائية، مع معالجة النقاط الحدية المشتركة (سواء كانت فترات مفتوحة أو مغلقة من أحد الطرفين).

يتطلب فحص المدى الرقمي باستخدام ifelse المتداخلة دمج معاملات المقارنة المركبة (مثل فحص أن تكون القيمة أكبر من أو تساوي الحد الأدنى وأقل تمامًا من الحد الأعلى). بفضل التقييم التتابعي، يمكن تبسيط هذا الفحص إذا كُتبت الشروط بترتيب متدرج؛ حيث إن وصول المشاهدة إلى المستوى الثاني يعني تلقائيًا أنها لم تستوفِ عتبة المستوى الأول، مما يقلل الحاجة إلى إعادة تكرار كتابة الحد الأدنى في كل مرحلة، شريطة الالتزام بالترتيب الرياضي الدقيق.

تتم مقارنة أسلوب التداخل الشرطي في فحص المدى بالدوال الإحصائية المدمجة المتخصصة في التقسيم، مثل دالة cut. تتميز دالة cut بقدرتها على تجزيء المتجه الرقمي إلى فترات عاملية محددة بخطوة واحدة مع ضبط حدود الفترات بدقة إحصائية عالية، إلا أن دالة ifelse المتداخلة تظل مفضلة عندما تتداخل المعايير الرقمية مع شروط نصية أو منطقية أخرى تتجاوز مجرد فحص المدى الكمي المجرد لمتغير مفرد.

7.3 تحديات الصيانة والمقروئية في التداخلات العميقة

تفرض التداخلات الشرطية العميقة تحديات برمجية وهندسية معقدة تُعرف في أدبيات هندسة البرمجيات بظاهرة “الكود الهرمي المعقد” أو هرم الهلاك (Pyramid of Doom). عندما يتجاوز عدد مستويات التداخل ثلاثة أو أربعة مستويات، يصبح الكود شديد التعقيد وصعب التتبع البصري؛ حيث تنزاح الأسطر البرمجية نحو اليمين بشكل مفرط، وتتكدس الأقواس المعقوفة والدائرية في نهايات الجمل بطريقة تجعل تصحيح الأخطاء (Debugging) مهمة شاقة ومستنزفة للوقت.

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

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

8. البدائل الحديثة المتقدمة: استخدام دالة case_when() من حزمة dplyr

8.1 مقارنة معمارية بين case_when() و ifelse() المتداخلة

أحدثت دالة case_when، المطورة ضمن منظومة حزمة dplyr، ثورة حقيقية في كيفية كتابة الشروط المتعددة المعقدة في لغة R. جاءت هذه الدالة كاستجابة هندسية لمعالجة أوجه القصور الهيكلية والجمالية لدوال ifelse المتداخلة، مستلهمة فلسفة عبارة SQL CASE القياسية، لتقديم صياغة شرطية مسطحة ونظيفة تتسم بالأناقة والمقروئية العالية وتتوافق بسلاسة مع مبادئ البيانات المرتبة (Tidy Data).

تعتمد المعمارية التركيبية لدالة case_when على استخدام الصيغة الموجية (Tilde Operator) للفصل بين طرفين: الطرف الأيسر (LHS) الذي يمثل الشرط المنطقي المُراد اختباره، والطرف الأيمن (RHS) الذي يمثل القيمة أو النتيجة المُراد إسنادها عند تحقق ذلك الشرط. يتيح هذا البناء البصري كتابة عدد لا نهائي من الشروط المتتالية بطريقة متوازية ومنظمة سطرًا بسطر، دون الحاجة لفتح وإغلاق أقواس متداخلة معقدة تعيق القراءة وتزيد من احتمالية الخطأ.

من أهم المزايا البنيوية لدالة case_when هو تطبيقها الصارم لمبدأ تجانس الأنواع (Type Safety). على عكس دالة ifelse التقليدية التي قد تقوم بتحويل أنواع البيانات ضمنيًا وبطرق غير متوقعة، تفرض case_when أن تكون كافة المخرجات في الطرف الأيمن من نفس نوع البيانات تمامًا (نصية بالكامل، أو رقمية بالكامل، أو منطقية بالكامل). إذا وجد المفسر تضاربًا بين أنواع المخرجات، فإنه يوقف التنفيذ ويصدر رسالة خطأ واضحة ومحددة، مما يحمي الباحث من الأخطاء النوعية الخفية في مجموعات البيانات الإحصائية.

8.2 إعادة صياغة الشروط المتعددة المعقدة بأسلوب مقروء

تتيح دالة case_when دمج كافة المعاملات المنطقية المتجهية (العطف &، والفصل |، والنفي !) داخل الطرف الأيسر لكل عبارة شرطية بمنتهى السلاسة والوضوح. يستطيع المحلل صياغة شروط مركبة تتضمن اختبارات رقمية ونصوصية متعددة لكل مستوى تصنيفي، وترتيبها وفق أولوية منطقية تبدأ من الحالات الأكثر تحديدًا وصرامة وصولاً إلى الحالات العامة، مما يوفر بيئة برمجية نظيفة تعبر بدقة عن منطق النمذجة الإحصائية.

لتغطية كافة الحالات المتبقية التي لم تستوفِ أيًا من الشروط السابقة، توفر الدالة آلية برمجية قياسية تتمثل في استخدام الثابت المنطقي TRUE في الطرف الأيسر للسطر الأخير، متبوعًا بالقيمة الافتراضية المطلوبة في الطرف الأيمن. نظرًا لأن TRUE دائم التحقق، فإن أي مشاهدة تصل إلى هذا السطر ستأخذ القيمة الافتراضية فورًا، وهو ما يماثل تمامًا دور فرع else النهائي في البنى الكلاسيكية ولكن بصياغة أكثر وضوحًا وأمانًا.

تتكامل هذه الدالة بصورة مثالية مع مشغلات الأنابيب البرمجية سواء مشغل magrittr التقليدي أو المشغل الأصلي المدمج في R الحديثة. هذا التكامل يسمح بإدراج التحويلات الشرطية المتعددة مباشرة داخل سلاسل المعالجة المجدولة المعتمدة على دالة mutate، مما يجعل الكود يتدفق بتسلسل منطقي مقروء يحاكي خطوات التفكير التحليلي البشري، ويعزز من كفاءة خطوط معالجة البيانات الإحصائية (Data Pipelines).

8.3 معالجة الحالات الخاصة والتصنيفات متعددة المتغيرات

تظهر القوة الحقيقية لدالة case_when عند التعامل مع الشروط التفاعلية متعددة المتغيرات التي تربط بين سمات ديموغرافية وسلوكية واقتصادية متباينة في نفس الوقت. يمكن للمحلل بناء مصفوفة قرارات شرطية متكاملة داخل دالة واحدة لمعالجة سيناريوهات معقدة؛ مثل تصنيف العملاء في دراسات التسويق، أو تقييم المخاطر الائتمانية في المصارف، حيث يتطلب كل تصنيف مزيجًا فريدًا من الدخل، وسجل السداد، والعمر، والمنطقة الجغرافية.

توفر الدالة مرونة فائقة في إسناد القيم المفقودة المنمطة بدقة؛ فعند الرغبة في إسناد قيمة مفقودة لحالة خاصة معينة، يجب استخدام الثوابت المفقودة متجانسة النوع مثل NA_character_ للبيانات النصية أو NA_real_ للبيانات الرقمية، التزامًا بقواعد الأمان النوعي للدالة. هذا التحديد الصارم يمنع المفسر من إفساد البنية الهيكلية لعمود البيانات ويضمن توافق الناتج مع متطلبات حزم النمذجة المتقدمة في المراحل التالية من التحليل.

تنعكس هذه المعالجة الحديثة إيجابيًا على تكلفة صيانة الكود وتحديثه على المدى الطويل في المشروعات البحثية والمؤسسية الكبرى. إن إضافة فئة تصنيفية جديدة أو تعديل عتبة رقمية معينة لا يتطلب سوى تعديل سطر برمجي واحد مستقل، دون المساس ببقية الشروط أو القلق بشأن انهيار التداخلات الهيكلية، مما يجعل case_when المعيار الذهبي المفضل للبرمجة الإحصائية الحديثة بلغة R.

9. معالجة القيم المفقودة (NA) والاستثناءات في العبارات الشرطية المتعددة

9.1 سلوك المعاملات المنطقية عند وجود قيم مفقودة (Three-Valued Logic)

تتبنى لغة R في معالجتها للمنطق الشرطي نظام المنطق ثلاثي القيم (Three-Valued Logic / Kleene Logic)؛ حيث لا تقتصر الحالات المنطقية على الصواب والخطأ فقط، بل تتضمن حالة ثالثة تمثل عدم المعرفة أو القيمة المفقودة المرموز لها بالرمز NA. ينشأ هذا النظام من الواقع الإحصائي الذي يعترف بأن غياب البيانات لا يعني نفيها أو إثباتها، بل يعني أن حالتها المنطقية تظل غير محددة حتى تتوفر معلومات إضافية.

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

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

9.2 استخدام دالة is.na() كجزء أصيل من الشروط المتعددة

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

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

تُستخدم هذه التقنية بكفاءة عالية في عمليات الاستبدال الشرطي الموجه (Conditional Imputation)؛ حيث يمكن تعويض القيم المفقودة في متغير معين اعتمادًا على قيم متغيرات أخرى متزامنة ومكتملة داخل نفس المشاهدة. هذا الأسلوب المنهجي يضمن الحفاظ على أكبر قدر ممكن من حجم العينة الإحصائية الصالحة للتحليل، مع توثيق وتأطير أسباب الاستبدال وفق قواعد منطقية محكمة وقابلة للمراجعة العلمية.

9.3 التعامل مع القيم غير المعرفة وغير المحددة (NaN و Inf)

تتولد في الحسابات الإحصائية أحيانًا قيم استثنائية خاصة تنتج عن العمليات الحسابية غير الصالحة رياضيًا؛ مثل القسمة على الصفر التي تنتج قيمة غير محددة رياضياً (Inf أو -Inf)، أو العمليات غير المعرفة كقسمة الصفر على الصفر أو الجذر التربيعي لعدد سالب، والتي تنتج الرمز الحسابي الخاص NaN (ليس رقمًا). تمثل هذه القيم الحسابية الشاذة خطرًا حقيقيًا على سلاسل التقييم الشرطي إن لم تُعالج بصورة استباقية.

تتعامل لغة R مع القيمة NaN على أنها نوع خاص وشديد التحديد من القيم المفقودة، مما يعني أن دالة is.na ستعيد القيمة الصحيحة عند فحصها، بينما توفر اللغة دالة أكثر تخصصًا هي is.nan للتمييز الدقيق بين البيانات المفقودة طبيعيًا وتلك الناتجة عن أخطاء حسابية. وبالمثل، توفر اللغة دالة is.infinite لفحص ورصد القيم اللانهائية الناتجة عن العمليات الحسابية المتطرفة قبل تمريرها للشروط المنطقية المعتمدة على العتبات الرقمية.

يتطلب بناء خطوط المعالجة الإحصائية الحصينة (Robust Data Pipelines) دمج دوال الحماية الحسابية ضمن الشروط المسبقة للجمل الشرطية. يتم بناء دوال مساعدة تفحص المتغيرات المستهدفة للتأكد من خلوها من القيم اللانهائية وغير المعرفة قبل تطبيق الشروط التصنيفية المتعددة، مما يحمي سلاسل التحليل والنمذجة التنبؤية من الانهيار المفاجئ ويضمن استقرار النتائج الإحصائية في كافة الظروف الحسابية المعقدة.

10. تقييم الأداء والكفاءة الحسابية في معالجة البيانات الضخمة

10.1 التحليل المقارن للسرعة واستهلاك الذاكرة

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

تُظهر دراسات قياس الأداء الحسابي المقارن (Benchmarking) فروقًا زمنية شاسعة بين الأدوات البرمجية المتاحة. عند استخدام حزمة microbenchmark لقياس سرعة المعالجة على مصفوفات مليونية، يتبين أن دالة fifelse المدمجة في حزمة data.table تتفوق بمراحل في السرعة وانخفاض استهلاك الذاكرة على كل من ifelse التقليدية ودالة case_when، بفضل كتابتها بلغة C المحسنة للتعامل المباشر مع الذاكرة وتجنب عمليات النسخ غير الضروري للكائنات أثناء التنفيذ.

تتميز دالة case_when بمقروئيتها الاستثنائية ومرونتها التعبيرية العالية، إلا أنها قد تتطلب وقت تنفيذ أطول نسبيًا مقارنة ببدائل data.table عند تطبيقها على متجهات ضخمة للغاية تتضمن شروطًا مركبة عديدة. يعود ذلك إلى الفحوصات الصارمة التي تجريها الدالة لضمان توافق الأنواع وسلامة البنية الهيكلية للبيانات. يوضح الجدول المقارن التالي السمات الإجرائية لأبرز الأدوات الشرطية:

  • دالة ifelse القياسية: متوسطة السرعة، استهلاك ذاكرة مرتفع نسبيًا، تفقد بعض السمات الخاصة للبيانات مثل التواريخ.
  • دالة case_when من dplyr: مقروئية ممتازة، أمان نوعي صارم، سرعة جيدة ومناسبة لمعظم التطبيقات المعتادة.
  • دالة fifelse من data.table: سرعة فائقة للغاية، استهلاك ذاكرة منخفض، تحافظ على سمات البيانات الأصلية بكفاءة عالية.

10.2 الاستفادة من العمليات الفهرسية المباشرة (Logical Subsetting)

تمثل الفهرسة المنطقية المباشرة (Logical Indexing / Subsetting) التقنية البرمجية الأكثر أصالة وكفاءة في لغة R لتطبيق التعديلات الشرطية المتعددة دون تكبد الأعباء الحسابية للدوال الوظيفية المساعدة. تعتمد هذه التقنية على استخدام الأقواس المعقوفة المزدوجة أو الفردية لتحديد المواقع الدقيقة في الذاكرة التي تستوفي متجه الشروط المنطقية، وإسناد القيم الجديدة لها مباشرة عبر مشغل التخصيص الحسابي المباشر.

يتم تطبيق هذا الأسلوب من خلال تهيئة عمود المتغير الجديد بقيمة افتراضية مسبقة، ثم تطبيق الشروط المنطقية المركبة كفهارس لتحديد الصفوف المستهدفة وتحديث قيمها خطوة بخطوة. يتميز هذا النهج بتجاوز عمليات التقييم الثلاثي الشامل التي تجريها الدوال المتجهية العامة؛ حيث يتم تعديل العناصر المطلوبة فقط في مكانها داخل الذاكرة (In-place Modification)، مما يقلل بشكل جذري من استهلاك الذاكرة المؤقتة أثناء المعالجة.

على الرغم من الأداء الحسابي الخارق للفهرسة المباشرة، إلا أنها تتطلب انضباطًا عاليًا من المبرمج في إدارة ترتيب العمليات وتفادي استبدال القيم التي عُدلت في خطوات سابقة. يجب على المحلل الموازنة الدقيقة بين الحاجة للسرعة القصوى في بيئات الإنتاج الضخمة، والرغبة في الحفاظ على مقروئية الكود وسهولة صيانته، والتي توفرها الدوال الحديثة مثل case_when للمشروعات التحليلية المشتركة.

10.3 التوازي والتحسين الحسابي للبنى الشرطية

عند وصول أحجام البيانات إلى مستويات تتجاوز قدرة المعالجة التسلسلية لنواة المعالج الواحدة، يصبح الانتقال إلى الحوسبة المتوازية (Parallel Computing) ضرورة حتمية لتحقيق التحسين الحسابي المطلوب. تتيح بنية لغة R الحديثة تقسيم متجهات البيانات الكبيرة وأطر البيانات الضخمة إلى كتل متساوية تُعالج عبر خيوط حوسبية متعددة بالتوازي على مختلف أنوية المعالج المركزي المتوفرة في النظام.

توفر منظومة الحزم المتقدمة، مثل حزمة future والامتداد المتوازي لحزمة purrr المعروف باسم furrr، بيئة برمجية قياسية لتطبيق العمليات الشرطية المتعددة والمعقدة عبر المعالجة المتوازية بأقل قدر من التعديل على بنية الكود الأصلي. تتيح هذه الأدوات تطبيق دوال الشروط المتعددة على مصفوفات ضخمة في أوقات قياسية، من خلال توزيع العبء الحسابي آليًا وتجميع النتائج في متجه نهائي موحد يتطابق في تركيبه مع التقييم التسلسلي التقليدي.

تتطلب الاستفادة المثلى من التوازي الحسابي تجنب الوقوع في عنق الزجاجة الناتج عن تكلفة نقل البيانات وتوزيعها بين الأنوية (Overhead Costs). لا يُنصح باللجوء إلى المعالجة المتوازية في الشروط البسيطة أو مجموعات البيانات الصغيرة والمتوسطة؛ حيث تفوق تكلفة إدارة العمليات المتوازية المكاسب الزمنية المحققة. يجب قصر استخدام هذه الاستراتيجيات المتقدمة على التحليلات الشرطية المعقدة المطبقة على ملايين المشاهدات في بيئات الحوسبة عالية الأداء (HPC).

11. تطبيقات وحالات دراسية عملية في النمذجة وتجهيز البيانات

11.1 تقسيم العينات الإحصائية إلى مجموعات ضبط وتجربة مشروطة

يعد التوزيع الشرطي للمشاهدات بين مجموعات التجربة والضبط أحد التطبيقات المنهجية الجوهرية في التصميم التجريبي والدراسات شبه التجريبية (Quasi-experimental Designs). في كثير من التجارب الميدانية، لا يكون التوزيع العشوائي البسيط كافيًا لضمان التكافؤ، بل يتطلب الأمر توزيعًا طبقيًا مشروطًا يستند إلى معايير متعددة تشمل الفئات العمرية، والجنس، وخط الأساس للمتغيرات التابعة، لضمان توازن المجموعات إحصائيًا ومنع التحيز في تقدير أثر التدخل التجريبي.

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

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

11.2 هندسة الخصائص وتوليد المتغيرات التفاعلية (Feature Engineering)

تمثل هندسة الخصائص في سياق النمذجة الإحصائية والتعلم الآلي العملية التحويلية التي يتم من خلالها استخلاص متغيرات جديدة ذات قدرة تفسيرية وتنبؤية أعلى من المتغيرات الأصلية الخام. تلعب الجمل الشرطية متعددة الشروط دورًا قياديًا في بناء المتغيرات التفاعلية (Interaction Variables) غير الخطية، والتي تعبر عن تزامن تحقق حالات معينة لا يمكن للنماذج الخطية البسيطة التقاطها بمفردها دون إرشاد مسبق من الباحث.

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

علاوة على ذلك، تُستخدم الشروط المتعددة في تشخيص ومعالجة القيم الشاذة والمتطرفة (Outliers) بطريقة ديناميكية مشروطة. بدلاً من الحذف العشوائي للمشاهدات المتطرفة، يمكن تطبيق قواعد شرطية مركبة تفحص ما إذا كانت القيمة الشاذة مرافقة لظروف تشغيلية استثنائية موثقة في أعمدة أخرى، ومن ثم اتخاذ القرار الإحصائي المناسب بتعديلها أو وسمها بمتغير مؤشر خاص يتيح للنموذج استيعابها كحالة خاصة ومميزة.

11.3 أتمتة الفحص والتحقق من جودة البيانات (Data Validation)

تعد أتمتة تدقيق جودة البيانات مرحلة حيوية تسبق أي تحليل إحصائي موثوق، وتستهدف اكتشاف التناقضات المنطقية والأخطاء الإدخالية عبر أعمدة قواعد البيانات المتشابكة. لا يمكن للاختبارات الأحادية البسيطة رصد الأخطاء المعقدة التي تنشأ من عدم التوافق بين متغيرين أو أكثر؛ مثل تسجيل حالة “حمل ولادي” لمريض مسجل كذكر، أو تسجيل سنوات خبرة تفوق العمر الإجمالي للموظف المستجيب للاستبيان.

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

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

12. أفضل الممارسات البرمجية والتوثيق الأكاديمي للأكواد الشرطية في R

12.1 قواعد النظافة البرمجية (Clean Code) وتنسيق الشروط المعقدة

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

من أهم مبادئ النظافة البرمجية تجنب الإفراط في تعقيد الشروط الفردية وحشوها في تعبير واحد غير مقروء. بدلاً من ذلك، يُنصح بتفكيك المنطق المعقد إلى خطوات وسيطة مدروسة من خلال إنشاء متجهات منطقية مؤقتة تحمل أسماء دلالية واضحة تعبر عن المعنى العلمي للشرط (مثل: is_eligible_adult أو has_high_risk_profile). هذا التفكيك المنهجي يسهل فحص واختبار كل جزء من المنطق الإحصائي بصورة مستقلة، ويجعل الكود النهائي بمثابة وثيقة علمية شارحة لذاتها.

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

12.2 بناء اختبارات الوحدة (Unit Testing) للتحقق من دقة المنطق الشرطي

يعد بناء اختبارات الوحدة الآلية خطوة متقدمة وحاسمة لضمان المتانة البرمجية للأكواد الإحصائية ومنع حدوث الانحدار البرمجي (Regression) عند تحديث الشروط أو إدخال بيانات جديدة. توفر بيئة R حزمًا متخصصة وراسخة في هذا المجال، وفي مقدمتها حزمة testthat، التي تتيح للمحلل كتابة اختبارات تأكيدية تفحص مخرجات الدوال الشرطية تحت مختلف الظروف والسيناريوهات الممكنة.

يتطلب التصميم المنهجي لاختبارات الوحدة تغطية شاملة لكافة الحالات الحدية (Boundary Conditions) والمتطرفة التي قد يواجهها النموذج في الواقع العملي. يشمل ذلك اختبار سلوك الكود عند تمرير قيم تقع تمامًا على عتبات المقارنة، أو عند وجود متجهات تحتوي بالكامل على قيم مفقودة NA، أو قيم شاذة غير معرفة NaN. إن نجاح الكود الشرطي في اجتياز هذه الاختبارات المتطرفة يمنح الباحث يقينًا مطلقًا بسلامة المعالجة الحسابية وثباتها الإجرائي.

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

12.3 دليل إرشادي لاختيار الأداة الشرطية الأنسب لكل سيناريو

لتسهيل عملية اتخاذ القرار البرمجي، يقدم هذا القسم دليلاً إرشاديًا يوضح المعايير المثلى لاختيار الأداة الشرطية الأنسب بناءً على طبيعة المهمة التحليلية، وحجم البيانات، ومتطلبات الأداء والأمان النوعي. يوضح الجدول التالي مصفوفة القرارات البرمجية:

  • جملة if-else الكلاسيكية: تُستخدم حصرًا في التحكم بتدفق الدوال البرمجية، والتحقق من صحة المدخلات العامة، واتخاذ قرارات تعتمد على مقاييس مفردة أحادية القيمة.
  • دالة ifelse القياسية: تُستخدم في المتجهات الصغيرة وأطر البيانات البسيطة للتصنيفات الثنائية السريعة التي لا تتطلب الحفاظ على سمات الكائنات المعقدة.
  • دالة case_when من dplyr: تُعد الخيار القياسي الأول لمعظم التحليلات الإحصائية وتجهيز البيانات متعددة الشروط، وتتميز بأمان نوعي ومقروئية استثنائية.
  • دالة fifelse من data.table: تُعد الخيار الحتمي والإلزامي عند معالجة البيانات الضخمة التي تتطلب سرعة فائقة وكفاءة قصوى في إدارة موارد الذاكرة.
  • الفهرسة المنطقية المباشرة: تُستخدم للتعديلات الموضعية المتخصصة ذات الأداء العالي عندما تكون السرعة هي المعيار الأوحد مع بساطة منطق الاستبدال.

إن الالتزام بهذا الدليل الإرشادي يضمن تحقيق التوازن الأمثل بين سهولة التطوير، وسلامة النتائج الإحصائية، وكفاءة استغلال الموارد الحاسوبية في مختلف مراحل التحليل المتقدم للبيانات.

خاتمة

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

كما بينت الدراسة أهمية الانتقال إلى البدائل البرمجية الحديثة مثل دالة case_when من منظومة tidyverse ودوال حزمة data.table عالية الأداء، لما توفره من مقروئية فائقة وأمان نوعي يحمي التحليلات الإحصائية من الأخطاء الصامتة ويضمن كفاءة استهلاك الذاكرة في عصر البيانات الضخمة. إن إتقان هذه الأدوات وتطبيق ممارسات الكود النظيف وبناء اختبارات الوحدة يمثلان الركيزة الأساسية لإنتاج بحوث إحصائية متينة وقابلة للتكرار العلمي وفق أعلى المعايير الأكاديمية العالمية.

المراجع

اقتباس هذا المقال

looti, M. (2026, أغسطس 31). R: كيفية استخدام جملة If مع شروط متعددة. عرب سايكلوجي. https://arabpsychology.com/statistics/r-how-to-use-if-statement-with-multiple-conditions/
looti, Mohammed. “R: كيفية استخدام جملة If مع شروط متعددة.” عرب سايكلوجي, 31 أغسطس 2026, https://arabpsychology.com/statistics/r-how-to-use-if-statement-with-multiple-conditions/.
looti, Mohammed. “R: كيفية استخدام جملة If مع شروط متعددة.” عرب سايكلوجي. أغسطس 31, 2026. https://arabpsychology.com/statistics/r-how-to-use-if-statement-with-multiple-conditions/.