بسم الله الرحمن الرحيم

Matrices

تاريخ النشر : Sept. 27, 2022

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


في R ، المصفوفة هي مجموعة من العناصر من نفس نوع البيانات ( numeric, character, or logical ) مرتبة في عدد ثابت من الصفوف والأعمدة. نظرًا لأنك تعمل فقط مع الصفوف والأعمدة ، فإن المصفوفة تسمى ثنائية الأبعاد two-dimensional .

يمكنك إنشاء مصفوفة في R باستخدام دالةmatrix() .

matrix(1:9, byrow = TRUE, nrow = 3)

حيث أن:

المعامل الأول هو مجموعة العناصر التي سيقوم R بتمثيلها في صفوف وأعمدة المصفوفة. هنا ، نستخدم 1: 9 وهو اختصار لـ c (1 ، 2 ، 3 ، 4 ، 5 ، 6 ، 7 ، 8 ، 9).

يشير المعامل byrow إلى أن المصفوفة مملوءة بالصفوف. إذا أردنا ملء المصفوفة بالأعمدة ، فإننا نضع byrow = FALSE.

يشير المعامل الثالثة إلى أن المصفوفة يجب أن تحتوي على ثلاثة صفوف.

تسمية المصفوفة

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

على غرار المتجهات ، يمكنك إضافة أسماء لصفوف وأعمدة مصفوفة

أسماء rownames (my_matrix) <- row_names_vector

أسماء الأعمدة (my_matrix) <- col_names_vector

مضينا قدمًا وأعدنا لك متجهين: المنطقة والعناوين. ستحتاج إلى هذه المتجهات لتسمية أعمدة وصفوف star_wars_matrix ، على التوالي.

rownames(my_matrix) <- row_names_vector
colnames(my_matrix) <- col_names_vector

rowSums()

في R ، تقوم الدالة rowSums () بحساب إجماليات كل صف من المصفوفة بشكل ملائم. تنشئ هذه الوظيفة متجهًا جديدًا:

rowSums(my_matrix)

cbind () إضافة عمود للمصفموفة

في التمرين السابق ، قمت بحساب المتجه الذي يحتوي على إيصال شباك التذاكر العالمي لكل فيلم من أفلام Star Wars الثلاثة. ومع ذلك ، فإن هذا المتجه ليس بعد جزءًا من star_wars_matrix.

يمكنك إضافة عمود أو عدة أعمدة إلى مصفوفة باستخدام الدالة cbind () ، التي تدمج المصفوفات و / أو المتجهات معًا حسب العمود. فمثلا:

إضافة صف

الان يمكنك دمج مصفوفتان بالصفوف بإستخدام rbind ()

new_matrix=rbind(mat1,mat2

جمع عناصر مصفوفة بالصف أو بالعمود

تمامًا مثل cbind () has rbind () ، يحتوي colSums () على rowSums (). تحتوي مساحة العمل R الخاصة بك بالفعل على all_wars_matrix التي أنشأتها في التمرين السابق ؛ اكتب all_wars_matrix لإلقاء نظرة أخرى. دعنا الآن نحسب إجمالي إيرادات شباك التذاكر للملحمة بأكملها.

# all_wars_matrix is available in your workspace
all_wars_matrix

# Total revenue for US and non-US
total_revenue_vector <-   colSums(all_wars_matrix) 
  
# Print out total_revenue_vector

total_revenue_vector

اختيار عناصر المصفوفة

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

my_matrix [1،2] يختار العنصر في الصف الأول والعمود الثاني.

ينتج عن my_matrix [1: 3،2: 4] مصفوفة بالبيانات الموجودة في الصفوف 1 و 2 و 3 والأعمدة 2 و 3 و 4.

إذا كنت تريد تحديد جميع عناصر صف أو عمود ، فلا حاجة إلى أي رقم قبل الفاصلة أو بعدها ، على التوالي:

my_matrix [, 1] يختار جميع عناصر العمود الأول.

my_matrix [1,] يختار جميع عناصر الصف الأول.

العودة إلى حرب النجوم بهذه المعرفة المكتسبة حديثًا! كما في التمرين السابق ، فإن all_wars_matrix متاحة بالفعل في مساحة العمل الخاصة بك.

# all_wars_matrix is available in your workspace
all_wars_matrix

# Select the non-US revenue for all movies
non_us_all <- all_wars_matrix[,2]

# Average non-US revenue
mean(non_us_all)
  
# Select the non-US revenue for first two movies
non_us_some <- all_wars_matrix[1:2,2]
  
# Average non-US revenue for first two movies
mean(non_us_some)

القليل من العمليات الحسابية باستخدام المصفوفات

على غرار ما تعلمته مع المتجهات ، تعمل العوامل القياسية مثل + ، - ، / ، * ، وما إلى ذلك بطريقة حكيمة على المصفوفات في R.

على سبيل المثال ، 2 * my_matrix تضرب كل عنصر من عناصر my_matrix في اثنين.

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

# all_wars_matrix is available in your workspace
all_wars_matrix

# Estimate the visitors
visitors <- all_wars_matrix /5
  
# Print the estimate to the console
visitors

تمامًا مثل 2 * my_matrix ضربت كل عنصر من عناصر my_matrix بمقدار اثنين ، تنشئ my_matrix1 * my_matrix2 مصفوفة حيث يكون كل عنصر هو نتاج العناصر المقابلة في my_matrix1 و my_matrix2.

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

أولئك الذين هم على دراية بالمصفوفات يجب أن يلاحظوا أن هذا ليس ضرب المصفوفة القياسي الذي يجب أن تستخدم فيه٪ *٪ في R.

# all_wars_matrix and ticket_prices_matrix are available in your workspace
all_wars_matrix
ticket_prices_matrix

# Estimated number of visitors
visitors <- all_wars_matrix / ticket_prices_matrix

# US visitors
us_visitors <- visitors[,1]

# Average number of US visitors
mean(us_visitors)

العودة إلي Introduction to R (تلخيصات من DATA CAMP)