الدليل الكامل: كيفية استخدام sort() وorder() وrank() في r
هناك ثلاث وظائف لـ R يخلط الناس بينها في كثير من الأحيان وهي الفرز والترتيب والتصنيف .
وهنا الفرق بين هذه الوظائف:
- سوف يقوم الترتيب () بفرز المتجه بترتيب تصاعدي
- order() سيُرجع فهرس كل عنصر من عناصر المتجه بترتيب مفروز
- سيقوم Rank() بتعيين رتبة لكل عنصر من عناصر المتجه (الأصغر = 1)
يوضح المثال التالي كيفية استخدام كل من هذه الوظائف عمليًا.
مثال: استخدم الترتيب () والترتيب () والرتبة () مع المتجهات
يوضح التعليمة البرمجية التالية كيفية استخدام وظائف sort() و order() و Rank() مع متجه ذي أربع قيم:
#createvector
x <- c(0, 20, 10, 15)
#sort vector
sort(s)
[1] 0 10 15 20
#order vector
order(s)
[1] 1 3 4 2
#rank vector
rank(x)
[1] 1 4 2 3
وإليك ما فعلته كل وظيفة:
1. تقوم وظيفة الفرز () ببساطة بفرز قيم المتجهات بترتيب تصاعدي.
2. تقوم الدالة order() بإرجاع فهرس كل عنصر بترتيب مفروز.
- إذا قمت بترتيب قيم المتجهات الأصلية بناءً على قيم الفهرس هذه، فستحصل على متجه مرتب.
- على سبيل المثال، يطلب منا الأمر () أن نضع القيمة أولاً في موضع الفهرس 1 – وهو 0 في المتجه الأصلي.
- بعد ذلك، يخبرنا order() أن نضع القيمة في موضع الفهرس 3 – أي 10 في المتجه الأصلي.
- بعد ذلك، يخبرنا order() أن نضع القيمة في موضع الفهرس 4 – أي 15 في المتجه الأصلي.
- ثم يخبرنا order() أن نضع القيمة في موضع الفهرس 2 – أي 20 في المتجه الأصلي.
- والنتيجة النهائية هي ناقلات مرتبة – 0، 10، 15، 20.
3. قامت الدالة Rank() بتعيين رتبة لكل عنصر من عناصر المتجه، باستخدام 1 لأصغر قيمة.
- على سبيل المثال، تخبرنا Rank() أن القيمة الأولى للمتجه الأصلي هي الأصغر (الرتبة = 1) وأن القيمة الثانية للمتجه الأصلي هي الأكبر (الرتبة = 4).
لاحظ أنه يمكننا استخدام الصيغة التالية لاستخدام الترتيب () والترتيب () والرتبة () بترتيب عكسي:
#createvector
x <- c(0, 20, 10, 15)
#sort vector in decreasing order
sort(x, decreasing= TRUE )
[1] 20 15 10 0
#order vector in decreasing order
order(x, decreasing= TRUE )
[1] 2 4 3 1
#rank vector in reverse order (largest value = 1)
rank(-x)
[1] 4 1 3 2
لاحظ أن هذه النتائج هي عكس تلك التي تم الحصول عليها في الأمثلة السابقة تمامًا.
ملاحظة: كيفية التعامل مع الروابط باستخدام وظيفة Rank()
يمكننا استخدام الوسيط Tie.method لتحديد كيفية التعامل مع الروابط عند استخدام الدالة Rank() :
rank(x, ties. method = ' average ')
يمكنك استخدام أحد الخيارات التالية لتحديد كيفية التعامل مع الروابط:
- المتوسط : (افتراضي) يعين لكل عنصر مرتبط متوسط الترتيب (العناصر المصنفة في المركزين الثالث والرابع ستحصل على تصنيف 3.5)
- أولاً : يعين العنصر المرتبط الأول إلى أدنى رتبة (العناصر المصنفة في المركزين الثالث والرابع ستحصل على الرتبتين 3 و 4 على التوالي)
- min : يعين كل عنصر مرتبط إلى أدنى رتبة (العناصر التي تحتل المرتبة الثالثة والرابعة ستحصل على المرتبة 3)
- الحد الأقصى : يعين لكل عنصر مرتبط أعلى رتبة (العناصر التي تحتل المرتبة الثالثة والرابعة ستحصل على المرتبة 4)
- عشوائي : يعين كل عنصر مرتبط برتبة عشوائية (أي عنصر مرتبط بالمركزين الثالث والرابع يمكن أن يحصل على أي من الرتبتين)
اعتمادًا على السيناريو الخاص بك، قد يكون استخدام إحدى هذه الطرق أكثر منطقية من الطرق الأخرى.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ العمليات الشائعة الأخرى في R:
كيفية الفرز حسب أعمدة متعددة في R
كيفية فرز إطار البيانات حسب التاريخ في R
كيفية حساب الرتبة المئوية في R