Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

إنشاء إطارات البيانات

جزء من قسم المنطق وتدفق التنفيذ في رحلة R على Coddy. الدرس 42 من 64.

إطار البيانات data frame هو جدول R: كل عمود هو متجه له نوعه الخاص، وجميع الأعمدة لها الطول نفسه، أي قيمة واحدة لكل صف. تنشئ الدالة data.frame() إطارًا من متجهات مُسمّاة:

people <- data.frame(
  name = c("ada", "bo", "cy"),
  age = c(36, 22, 41),
  city = c("london", "paris", "rome")
)
print(people)

الناتج:

  name age   city
1  ada  36 london
2   bo  22  paris
3   cy  41   rome

تعطي nrow() وncol() الحجم، وتعرض names() أسماء الأعمدة. وعلى عكس المصفوفة، يمكن أن تحتوي الأعمدة على أنواع مختلفة: نصوص وأرقام هنا.

people <- data.frame(
  name = c("ada", "bo", "cy"),
  age = c(36, 22, 41),
  city = c("london", "paris", "rome")
)
print(nrow(people))
print(ncol(people))
print(names(people))

الناتج:

[1] 3
[1] 3
[1] "name" "age"  "city"

تُظهر str() النوع والقيم الأولى لكل عمود، وهي طريقة سريعة للتحقق مما يحتويه إطار البيانات:

people <- data.frame(
  name = c("ada", "bo", "cy"),
  age = c(36, 22, 41),
  city = c("london", "paris", "rome")
)
str(people)

الناتج:

'data.frame':	3 obs. of  3 variables:
 $ name: chr  "ada" "bo" "cy"
 $ age : num  36 22 41
 $ city: chr  "london" "paris" "rome"

غالبًا ما تصل البيانات في صورة نص، بحيث يحتوي كل سطر على صف واحد. تحوّل read.csv(text = lines) مثل هذه الأسطر إلى إطار بيانات، باستخدام السطر الأول كأسماء للأعمدة وتحويل الأرقام تلقائيًا:

lines <- c("item,qty", "tea,2", "jam,5")
orders <- read.csv(text = lines)
print(orders)
print(sum(orders$qty))

الناتج:

  item qty
1  tea   2
2  jam   5
[1] 7
challenge icon

التحدي

سهل

أكمل table_info(names, ages). أنشئ إطار بيانات بالأعمدة name وage من المتجهين. أعد ثلاثة أسطر: Rows: مع عدد الصفوف، وColumns: مع أسماء الأعمدة موصولة باستخدام , ، وOldest: مع الاسم في الصف ذي العمر الأكبر (الأول عند تعادل الأعمار).

يقرأ الكود المزوَّد الأسماء والأعمار كسطرين مفصولين بفواصل، ويطبع كل سطر مُعاد.

جرّب بنفسك

table_info <- function(names, ages) {
  # اكتب كودك هنا
  character(0)
}

# كود الإدخال/الإخراج المُزوَّد: أبقه كما هو
input <- suppressWarnings(readLines(file("stdin")))
cat(table_info(strsplit(input[1], ",")[[1]], as.numeric(strsplit(input[2], ",")[[1]])), sep = "\n")
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم R عبر الإنترنت