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

نتحدّث في هذه المقالة عن مميزات لغة R في تحليل البيانات وأبرز الدوال والأوامر المستخدمة في عملية التحليل عبر R.

مميزات استخدام لغة R في تحليل البيانات وإعداد التقارير التحليلية

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

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

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

كيفية إعداد بيئة RStudio

RStudio IDE هي بيئة تطوير متكاملة (IDE) للعمل مع لغة R مفتوحة المصدر مجانية، تستخدم لكتابة التعليمات البرمجية، والتنقل بين الملفات الموجودة على الكمبيوتر وفحص المتغيرات التي ستنشئها، وتصور المخططات. تنقسم إلى 4 أجزاء:

  1. مصدر البرامج النصية والمستندات في أعلى اليسار في التخطيط الافتراضي.
  2. وحدة التحكم R تقع أسفل اليسار.
  3. البيئة/التاريخ في أعلى اليمين.
  4. ملفاتك/المؤامرات/الحزم/المساعدة/ العارض تقع في أسفل اليمين. 

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

خطوات إنشاء مشروع باستخدام R

تُحفَظ البيانات والتحليلات والنصوص البرمجية في مجلد يُطلَق عليه اسم دليل العمل، بحيث يمكن للبرامج النصية فيه استخدام المسارات النسبية للملفات التي تشير إلى مكان وجود الملف داخل المشروع بخلاف المسارات المطلقة التي تشير إلى مكان وجود الملف على الكمبيوتر. مما يسهل نقل مشروعك على الكمبيوتر ومشاركته مع الآخرين دون خوف من فقدانها، يمكنك إنشاء “مشروع R” لبرنامج تعليمي باتباع الخطوات التالية:

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

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

كيفية التفاعل مع R عبر Rstudio 

يوجد طريقتان رئيسيتان للتفاعل مع R إما باستخدام وحدة التحكم أو باستخدام ملفات البرامج النصية، الجدير بالذكر أنه يمكنك استخدام اختصارات Ctrl + 1 وCtrl + 2 للانتقال بين البرنامج النصي وأجزاء وحدة التحكم، حيث:

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

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

كيفية تحليل البيانات باستخدام لغة R

كما هو معروف تتضمن مرحلة تحليل  البيانات خمس مراحل أساسية:

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

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

أولا يجب تثبيت حزمة tidyserve المخصصة لتحليل البيانات في لغة r بكتابة الأمر:

install package (tidyserve) 

كيفية إدخال البيانات في R

يستخدم “عامل الإدخال” في R لتعيين اسم لكائن ما:

  • يمكن تمثيل مجموعة بيانات على شكل متجه أو مصفوفة أفقية وإعطاءه اسم كما يلي: 

> object-name ->c( object1, object 2, object3, objectn)

  • لإدخال متغير صحيح نستخدم الأمر:

> object-name1 -> 3

  • لإدخال متغير حقيقي نستخدم الأمر:

> object-name2 -> 3.3

حيث يدل “>” إلى موجه جاهز مقدم من R، مما يشير إلى أن R جاهز لإدخالنا (كتب R >، وكتبت بقية السطر).

حيث أن object-name هو الاسم الذي نطلقه على الكائن الذي سنقوم بإنشائه. “<-” هو عامل التعيين، و”c(…)” هي دالة تنشئ متجه عمود من القيم المدخلة. لطباعة الكائن نستخدم الأمر التالية:

 > object-name

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

7.5.data.frame(x=c(2,4.1),y=c(3,4,6.1))

  • لإنشاء مصفوفة في R تستخدم الدالة Matrix()، فعي تحتوي الدالة المصفوفة () على وسيطتين رئيسيتين الأول يحتوي متجه القيم، ثم اختيار تحديد عدد الصفوف أو الأعمدة عبر الأكواد nrow = أو ncol = كما يلي:

matrix(c(3:8), nrow = 2)

matrix(c(3:8), ncol = 2) 

التعامل مع الملفات

 لإنشاء مجلد جديد:

dir. creat(“destination_folder”)

لإنشاء ملف جديد: 

file. creat(“new_text_file.txt”)

file. creat(“new_word_file.docx”)

file. creat(“new_csv_file.csv”)

لنسخ ملف:

file. copy(“new_file.txt”, “destination _folder”)

لحذف ملفات R باستخدام الأمر:

unlike(“some_.file.csv”)

غالباً لن تحتاج إنشاء إطار بيانات يدويًا بل تستورد البيانات من مصدر آخر مملف بتنسيق ‎.csv، أو قاعدة بيانات علائقية، إليك الطريقة في الفقرة التالية.

جلب البيانات من ملف Excel أو txt إلى R

عند استخدام لغة R في تحليل البيانات قد تحتاج تحليل متغير واحد مع عدد قليل من الملاحظات يمكن إدخال متجه العمود مباشرة في R كما أشرنا في الفقرة السابقة. لكن مع مجموعات البيانات الكبيرة من الأسهل إنشاء مجموعة البيانات وحفظها في Excel أو txt ثم إحضار المعلومات من الملف إلى R باستدعاء المكتبة readr المخصصة لقراءة الملفات: 

library(tidyverse)

library(readr)

جلب البيانات إلى R من ملف Excel 

يعد MS Excel أداة ممتازة لإدخال البيانات وإدارتها، إذ يتم ترتيب البيانات والمتغيرات كأعمدة والموضوعات كصفوف، كما يمكن استخدام الصف الأول من ملف الإكسل (‘head’) لتوضيح أسماء المتغيرات (أسماء الكائنات للمتجهات في R).

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

بعد ذلك يمكن إحضار ملف .csv إلى R باعتباره ” data frame” باستخدام الأمر 

library(tidyverse)

library(readr)

read.csv(filename.choose()). command.Entering

>filename2 <-read.csv(filename. choose())

تفتح قائمة تحتوي قائمة ملفات للدليل الافتراضي، بحيث يتم تحويله إلى ملف R باسم “filename2” بالنقر المزدوج على ملف البيانات.

الوصول إلى المتغيرات الفردية من مجموعة البيانات المستوردة

  “dataframename$variablename”.

 ينشىء الأمر “read.csv” كائن داتا فريم لمجموعة البيانات التي يمثلها ملف Excel، ولكنه لا ينشيء كائنات للمتغيرات الفردية. لذا، يمكننا إجراء بعض التحليلات على مجموعة البيانات بأكملها، لا يمكننا بعد إجراء تحليلات على متغيرات محددة. فعندما يتم تحديد أسماء المتغيرات كالصف الأول من ملف Excel المستورد، يقوم R بإنشاء كائنات باستخدام الأمر ‘dataframename$variablename’.  

-> dataframname >

read.csv(filename.choose())

dataframename$variablename

 يستخدم الأمر () attach للراحة، كما يمكن تسمية المتغيرات الفردية في مجموعة البيانات بدون بادئة اسم إطار البيانات.

تنشيء وظيفة “()attach” كائنات فردية لكل متغير، إذ يتم تحديد اسم الداتا فريم بين قوسين:

 > attach(dataframname))

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

عرض أو تحرير داتا فريم باستخدام محرر بيانات R

يمكن عرض داتا فريم R وتحريره كجدول بيانات داخل R باستخدام محرر بيانات R، بالضغط على قائمة “المحرر” الموجودة أعلى شاشة R، ثم الضغط على خيار “محرر البيانات”، فيفتح داتا فريم لعرضه/تحريره.

أو يمكنك من خلال ستفتح الدالة Fix() محرر البيانات:

 > fix(datafram)

فتظهر مجموعة البيانات بتنسيق جدول بيانات، لكن لا يمكن إجراء التحليلات أثناء فتح محرر البيانات.

جلب البيانات إلى R من ملف نصي محدد بمسافات

عند استخدام Excel لتنظيم البيانات، من الأسهل إحضار البيانات إلى ملف R كملفات ‎csv.

ولكن يمكن حوسبة البيانات عبر برامج أخرى، ويمكن لـ R قراءة البيانات المحفوظة من خلال برامج أخرى أيضًا.

إذ يمكن إحضار كملف نصي بامتداد txt. من خلال برنامج MS Word أو برامج أخرى باستخدام وظيفة ()read.table.

كما في ملفات Excel، يجب إعداد مجموعة البيانات بأعمدة تمثل المتغيرات وصفوف تمثل الموضوعات، ومن المفيد تحديد أسماء المتغيرات كالصف الأول من المستند:

 > datafram1 <- read.table(“frame 1.txt”).

جلب البيانات من قواعد البيانات

تتصل لغة R بالعديد من قواعد البيانات العلائقية بما يتضمن Oracle وMySQL وSQL Server ثم يتم جلب النتيجة كإطار بيانات يمكن تحليلها تصورها ومعالجتها.

يجب تثبيت حزمة RMySQL لتوفر الاتصال بين قواعد بيانات R وMySql بالأوامر التالية:

library(“RMySQL”) 

 install.packages(“RMySQL”)

  • لإنشاء اتصال

mysqlconn = dbConnect(MySQL(), user = ‘usernam’, password = ‘pass’,  dbname = ‘dbname’,host =’localhost’)

 يمثل  dbConnect برنامج تشغيل قاعدة البيانات، يمثل user اسم المستخدم، تمثل password قيمة كلمة المرور المخصصة لخادم قاعدة البيانات، يمثل dbname اسم قاعدة البيانات، host يمثل اسم المضيف.

  • عرض الجداول في قاعدة البيانات

 dbListTables(mysqlconn)

  • جلب كافة الصفوف من جدول

Variablename5 = dbSendQuery(mysqlconn, “SELECT *FROM tablename”)

  • جلب الصفوف الثلاثة الأولى في إطار البيانات

df = fetch(variablename 5, n = 3)

print(df)

إدارة البيانات في R

تتضمن عدة دراسات بحثية بعض مهام إدارة البيانات قبل أن تصبح جاهزة للتحليل الإحصائي، يمكن استخدام لغة R في تحليل البيانات لمهام إدارة تلك البيانات كما يلي:

حساب المتغيرات الجديدة

يمكن حساب المتغيرات الجديدة باستخدام عامل الإسناد، إذ يمكنك إنشاء مجموع المتغيّرات من خلال الأمر التالي:

 > totvarible <- variablename1+variblename2+variablename3+variablename4

بحيث تشير العوامل التالية: * , / , ^ للدلالة على الضرب والقسمة والرفع إلى قوة.

إنشاء المتغيرات الفئوية

تستخدم الدالة ‘()ifelse’ لإنشاء متغير من فئتين.  يقوم المثال التالي بإنشاء متغير فئة عمرية يأخذ القيمة 1 لمن عمره أقل من 30 عامًا، والقيمة 0 لمن عمره 30 عامًا أو أكثر:

 > ageLT30 <- ifelse(age < 30,1,0)

 وسيطات الدالة تعبير شرطي، ثم القيمة المأخوذة إذا كان التعبير صحيحًا، ثم القيمة المأخوذة إذا كان التعبير خطأ.  

كما يمكن دمج التعبيرات المنطقية كـ AND أو OR مع & و |  الرموز كما في المثال التالي: 

  age>30 & age <=30 

إذ يشير ذلك التعبير إلى الأشخاص الذين تتراوح أعمارهم بين 30 إلى 39 عامًا بمعنى أكبر من 30 وأقل من أو يساوي 39.

 في التعبيرات المنطقية نستخدم علامة ‘==’ للدلالة على المساواة، وعلامة ‘!=’ للدلالة على عدم المساواة.

<- ifelse(BM==4,1,0)

لإنشاء متغير فئة يأخذ أكثر من فئتين يجب كتابة سلسلة من الأوامر، مثلاً لإنشاء متغير agecat يأخذ القيم 1 أو 2 أو 3 أو 4 لمن عمره أقل من 20 عامًا، وبين 20 و39 عامًا، وبين 40 و59، وأكثر من 60 عامًا، على التوالي نكتب:

 > agecat <- 99

 > agecat[age<20] <- 1

> agecat[20<=age & age<=39]<-2

> agecat[40<age & age<=59] <- 3

 > agecat[60 <= age] <- 4

استكشاف البيانات باستخدام R

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

 library(tidyverse)

library(dplyr)

  • تستخدم الدالة ()length لتحديد عدد القيم أو حجم العينة في datafram بكتابة الأمر:

> length(object-name)

  • كما يمكن معرفة ملخص حول ال data  يتضمن متوسط ​​المتغير والحد الأدنى والأقصى والمئين الخامس والعشرين والخامس والسبعين باستخدام الدالة “() summary” بكتابة الأمر:

>summary(object-name)

  • لحساب ملخص عمود معين، يمكنك استخدام الأمر التالي:

 >summary(datafram1 [cool number])

  • لحساب ملخص عمود معين حسب اسمه، يمكنك استخدام الأمر التالي:

>summary(datafram1&object-name)

  • لمعرفة أسماء المتغيرات في مجموعة البيانات:

name(datafram1)

  • لحساب عدد الصفوف في مجموعة البيانات

> nrow(datafram1)

  • لحساب عدد الأعمدة في مجموعة البيانات

 > ncol(datafram1)

  • لمعرفة هيكل القائمة لمجموعة البيانات:

> str(datafram1)

  • لمعرفة أول 6 صفوف من مجموعة البيانات:

> head(datafram1)

head(datafram1, n=5) 

  • لمعرفة كل الصفوف عدا الصف الأول:

head(datafram1, n= -1)

  • لمعرفة آخر 6 صفوف من مجموعة البيانات:

tail(datafram1, n=5)

  • لمعرفة آخر عدد من الصفوف من مجموعة البيانات:

tail(datafram1) 

  • لمعرفة كل الصفوف عدا الصف الأخير:

tail(datafram1, n=-1)

  • لتحديد صفوفًا عشوائية “عينة” من مجموعة بيانات:

sample_n(datafram1, 5)

  • لتحديد صفوف عشوائية بنسبة N%:

sample_frac(datafram1, 0.1)

  • لمعرفة عدد القيم المفقودة:

colSums(is.na(datafram1))

sapply(datafram1, function(y) sum(is.na(y)))

  •  لمعرفة عدد القيم المفقودة في متغير واحد

sum(is.na(dataframe1$Q1))

  • لإيجاد موضع العناصر المكررة في x:

duplicated(x)

  •  استخراج العناصر المكررة:

x[duplicate (x)]

  • استخراج العناصر الفريدة

unique (datafram1)

مرحلة المعالجة

تتضمن مرحلة المعالجة تنظيف البيانات وحذف التكرارات وملء القيم المفقودة وحل التحيز وعند استخدام لغة R في تحليل البيانات تكون مرحلة المعالجة باستخدام مكتبة tidy كما يلي: 

library(tidyverse)

library(tidy)

لترتيب متغير عمود نستخدم:

 %>% arrange(Variablename)

لفصل عمود الى عمودين:

separate (variablename)

لدمج عمودين نستخدم:

unite (variable1, variable2)

 إزالة التكرارات

  • لإزالة  العناصر المكررة من متجه:

x[! duplicate (x)]

  • إزالة التكرارات من الداتا فريم أعمدة

data[!duplicated(dataframe1$Sepal.Width), ]

  •  إزالة الصفوف المكررة بحسب كل الأعمدة:

 datafram1 %>% distinct()

  • إزالة الصفوف المكررة من الداتا فريم بحسب أعمدة معينة:

إزالة الصفوف المكررة بحسب الطول:

datafram1 %>% distinct(Sepal.Length, .keep_all = TRUE)

إزالة الصفوف المكررة بحسب الطول والعرض

datafram1 %>% distinct(Sepal.Length, Petal.Width, .keep_all = TRUE)

تعبئة القيم المفقودة

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

  • تستخدَم طريقة “up” لملء القيم المفقودة في البيانات بالقيم الالسابقة باستخدام الأمر:

dataframe1 <- df %>% fill(c, .direction = ‘up’) 

  • تستخدَم طريقة “Down” لملء القيم المفقودة في البيانات بالقيم التي تليها باستخدام الأمر:

dataframe1 <- df %>% fill(c, .direction = ‘down’) 

معالجة التحيز

يمكن استخدام تابع التحيز bias() لأخذ عينة من البيانات ومعالجة التحيز كما يلي:

Variable <- 2

samp <- rnorm(100, 2, sd = 0.5)

bias(samp, varible)

bias(samp, variable, type = ‘relative’)

bias(samp, variable, type = ‘standardized’)

dev <- samp – variable

bias(dev)

bias(mean(samp), variable)

بعد إجراء عملية المعالجة للتأكد من نظافة البيانات نستخدم التابع:

cleans-name()

مرحلة التحليل

تتضمن مرحلة التحليل الإجابة على الأسئلة للتوصل إلى النتائج باستخدام الإحصائيات الوصفية الأساسية استخدام لغة R في تحليل البيانات تكون مرحلة التحليل باستخدام الأوامر التالية:

إيجاد المتوسطات والوسيطات والانحرافات المعيارية

لحساب متوسط متغير نستخدم الدالة () mean 

بكتابة الأمر التالي:

> mean(object-name)

أما لحساب الانحرافات المعيارية نستخدم الدالة  ()sd إما لجميع المتغيرات في مجموعة بيانات أو لمتغيرات محددة بكتابة الأمر:

> sd(object-name)

إيجاد التكرارات والنسب للمتغيرات الفئوية

عند التعامل مع المتغيرات الفئوية، يمكن حساب عدد الموضوعات في كل فئة باستخدام الدالة ‘()table’، كما نسبة الموضوعات في كل فئة باستخدام الدالتين:

‘prob.table(table ())’.

فعلى سبيل المثال: في مجموعة بيانات يتم ترميز المتغير “sexmale” بالرقم 0 للإناث و1 للذكور. لمعرفة عدد الذكور والإناث في مجموعة البيانات هو:

 table(sexmale)

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

> prop.table(table(sexmale))

تحليلات المجموعات الفرعية: إيجاد المتوسطات والانحرافات المعيارية 

يمكن إجراء تحليلات المجموعات الفرعية في R بثلاث طرق تتجلى فيما يلي:

  • أولاً، استخدام عبارة “determ” لتقييد التحليل بمجموعة فرعية من المواضيع.
  • ثانيًا، استخدام الدالة Tapply() لإجراء تحليلات عبر مجموعة من المجموعات الفرعية في الداتا فريم.
  • ثالثًا، إنشاء داتا فريم جديد لمجموعة فرعية باستخدام الدالة subset()، ثم إجراء التحليلات على الداتا فريم الجديد.

يمكن تحليل مجموعة فرعية باستخدام الأمر:

variablename[subset] 

عند وجود مجموعتين من البيانات تستخدمان نفس أسماء المتغيرات، يجب استخدام تنسيق ‘dataframe$variablename’ لتحديد اسم متغير للعينة المناسبة.

عند تحديد شرط التضمين في العينة الفرعية يلزم وجود علامتين متساويتين ‘==’ للإشارة إلى قيمة التضمين كما يلي:

> mean(variablename[group==1])

كما يمكن استخدام المعاملات أقل من (<)، أو أقل من أو يساوي (<=)، أو أكبر من (>)، أو أكبر من أو يساوي (>=)، أو لا تساوي (!=).  فعلى سبيل المثال، عند إنشاء data frame لأشخاص أعمارهم 65 عامًا أو أكثر:

> age65plus <- subset(allsubjects,age>64)

تصوير البيانات باستخدام R

عند استخدام لغة R في تحليل البيانات يلزم تمثيل البيانات على شكل رسومات بيانية لتسهيل قرائتها من قبل أصحاب المصلحة باستخدام مكتبة ggplot2 لاستدعائها نكتب الأمر:

library(tidyverse)

library(ggplot2)

وظيفة filter من dplyr

تسهل وظيفة filter من dplyr قراءة المخططات التي تنشئها باستخدام ggplot2 كما تسمح تخصيص اسماء المتغيرات واللون والشكل والحجم باستخدام التابع aes كما يمكن إضافة تعليقات توضيحية عن الرسومات باستخدام التابع Annotation():

data %>% filter(variable1 == “DS”) %>% ggplot(aes(x = Variablename 1, y = variablename2, colour = colorname)) +  Annotation(“Annotation_text”)

لعمل تصورات مخططات شريطية نستخدم التابع Geom_bar()، كما نستخدم Geom_point() لعمل مخطط مبعثر.

ggplot(data,aes(x=varname1, y= varname2, title= ‘Blue and Yellow bars’ col = ifelse (x<2, ‘blue’, ‘yellow’) )) + Geom_bar()

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

ggplot(data,aes(x=varname1, y= varname2)) + Geom_point() + Geom_smooth()

يوجد نوعان من التنعيم:

  • تنعيم loess

تعتبر عملية تجانس loess الأفضل لتسوية الرسومات التي تحتوي أقل من 1000 نقطة:

 ggplot(data, aes(x=, y=))+  Geom_point() + Geom_smooth (method=”loess”)

  • تنعيم Gam

يفيد تنعيم Gam أو تجانس النموذج الإضافي المعمم لتجانس الرسومات التي تحتوي عدد كبير من النقاط:

ggplot(data, aes(x=, y=)) + geom_point() +     geom_smooth(method=”gam”, formula = y ~s(x))

من طرق التصورات التي تقدمها R هي:

 المخططات الشريطية

تستخدم المخططات الشريطية لإجراء دراسة مقارنة بين مختلف فئات البيانات في مجموعة البيانات، أو لتحليل تغير متغير ما مع الوقت بالأشهر أو السنوات

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

barplot(dataframe$variable, main = ‘var1’, xlab = ‘var2’, col = ‘blue’, horiz = FALSE)

الرسم البياني histagram

يتم تجميع القيم وعرضها في فترات زمنية متتالية تسمى الصناديق، وتستخدم في السيناريوهات التالية: التحقق من التوزيع المتساوي والمتماثل للبيانات، التعرف على الانحرافات عن القيم المتوقعة.

تستخدم لرسم كائن يمثل مصفوفة متغيرة ‘متجه’ بكتابة الأمر:

> hist(variablename)

تستخدم R اسم المتغير (variablename) في العنوان وتسمية المحور السيني للرسم البياني بشكل افتراضي، لكن يمكن الكتابة فوق العنوان الافتراضي باستخدام الخيار ()main=past، كما يمكن الكتابة فوق تسمية المحور x باستخدام الخيار ‘xlab=’ تستخدم المعلمة xlim لتحديد الفاصل الزمني الذي ستعرض كافة القيم فيه، بينما المعلمة freq عند ضبطها على TRUE تشير إلى تكرار القيم المختلفة في الرسم البياني وعند ضبطها على FALSE تمثل كثافات الاحتمالية على المحور y بحيث تكون من الرسم البياني تضيف ما يصل إلى واحد.

كما يلي:

< hist (datafram1$variablename, main=past (variablename), main =”text1″, xlab=”variablename”, col =”yellow”,  freq = TRUE)

الدالة boxplots

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

 > boxplot(variablename ~ group)

كما يمكن إضافة تخصيص الرسم بالألوان والمسميات كما يلي:

> boxplot(variablename ~ group, xlab=”text1″, ylab=” text2″, col = “orange”, border = “brown”,    horizontal = TRUE, notch = TRUE) 

المخططات المبعثرة Scatter

تتكون المخططات المبعثرة من عدة نقاط على المستوى الديكارتي، تستخدم لإظهار الارتباط بين البيانات ثنائية المتغير، أو لقياس قوة واتجاه العلاقة:

plot(dataframe1$variablename1, dataframe1$variablename2, main = “text1″, xlab =”text2″, ylab =” text3 “) 

الخريطة heatmap

# Set seed for reproducibility 

# set.seed(110)  

data <- matrix(rnorm(50, 0, 5), nrow = 5, ncol = 5) 

colnames(data) <- paste0(“col”, 1:5) 

rownames(data) <- paste0(“row”, 1:5) 

heatmap(data)

الغرافات البيانية

Syntax: persp(x, y, z)

إضافة العناوين وتسمية المحاور الى الرسم

cone <- function(x, y){ sqrt(x ^ 2 + y ^2) } 

 تحضير المتغيرات

x <- y <- seq(-1, 1, length = 30) 

z <- outer(x, y, cone) 

رسم سطوح ثلاثية الأبعاد، مع إضافة عناوين ومحاور

persp(x, y, z, main=”text1″, zlab = “Height”, theta = 30, phi = 15, 

col = “orange”, shade = 0.4)

حفظ التصورات

أبسط طريقة لحفظ التصورات هو استخدام الدالة ggsave() كما يلي:

ggsave(“plot_name”)

 لكن أحياناً الأفضل حفظها على الجهاز يمكنك فتح جهاز رسومات R مثل ()png() PDF أو PNG() أو JPEG() أو SVG()، أو ملف ثم اختيار طباعة وإغلاق الجهاز باستخدام 

dev.of() كما يلي:  

png(file = “exampleplot.png”, bg = “transparent”) plot(1:10) rect(1, 5, 3, 7, col = “white”) dev.off() 

pdf(file = “/Users/username/ Desktop/example.pdf”, width = 4, height = 4) plot(x = 1:10, y = 1:10) abline(v = 0) text(x = 0, y = 1, labels = “Random text”) dev.off()

حفظ داتا فريم R كملف .csv

بعد الانتهاء من استخدام لغة R في تحليل البيانات يمكن حفظ الداتا فريم كملف csv باستخدام الأمر: ()write.csv.

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

فعندما نقرأ من ملف .csv داتا فريم متغيرات تحت اسم “datafram1” فيها “var1″ و”va2” متغيرين، ثم ننشأ متغيرات جديدة “var3″ و”4var” ستكون تلك المتغيرات متاحة للتحليل باستخدام R لكنها لن تكون جزءًا من الداتا فريم “datafram1″، لإضافتها نستخدم الدالة “()cbind” كما يلي:

> datafram1 <- cbind(datafram1,v3,v4).

عندما يتم إنشاء متغيرات جديدة وإضافتها إلى الداتا فريم في R، يجب حفظ مجموعة البيانات المحدثة هذه كملف csv، بحيث يمكن تحويله إلى ملف Excel أو تنسيق آخر، يمكن فعل ذلك باتباع الخطوات التالية:  

اضغط على القائمة “ملف”، ثم انقر فوق “تغيير الدليل”، ثم حدد المجلد الذي تريد حفظ الملف فيه، ثم استخدم اكتب الأمر التالي:

>write.csv(datafram1,’datafram2.csv’)

إذ يشير المعامل الأول (datafram1) هي اسم الداتا فريم في R، بينما المعامل الثاني datafram2 بين علامتي الاقتباس هو الاسم الذي ستمنحه لملف .csv المحفوظ على جهازك.

في الختام، الجدير بالذكر أنه عند استخدام لغة R في تحليل البيانات يمكن طلب المساعدة من خلال واجهة المساعدة RStudio التي توجد افتراضيًا في اللوحة اليمنى السفلية لـ RStudio.

إذا لم تجد ما تبحث عنه يمكنك استخدام موقع rdocumentation.org الذي يبحث في ملفات المساعدة عبر جميع الحزم المتاحة. كما يمكنك البحث العام على Google أو الإنترنت “R <task>” إلى وثائق الحزمة المناسبة أو إلى منتدى مفيد حيث قام شخص آخر بطرح سؤالك بالفعل مثل Stack Overflow.

المصادر

تحليل البيانات باستخدام r منصة كورسيرا 

Facebook
Twitter
YouTube
LinkedIn
Instagram