إنشاء إطارات البيانات
جزء من قسم المنطق وتدفق التنفيذ في رحلة 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التحدي
سهلأكمل 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")
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1السلاسل النصية بعمق
السلاسل الفرعية باستخدام substr()التنسيق باستخدام sprintf()التقسيم والضمالبحث في السلاسل النصيةاستبدال النصوصمراجعة - منشئ اسم المستخدم4المصفوفات
إنشاء المصفوفاتفهرسة المصفوفاتملخصات الصفوف والأعمدةالحساب على المصفوفاتمراجعة - مخطط المقاعد2استرجاع القيم باستخدام المفاتيح
البحث في المتجهات المُسمّاةالتحقق من المفاتيحإضافة المفاتيح وإزالتهاالتكرار عبر الأسماءمراجعة - مكتب الأسهم3المجموعات والعدّ
القيم الفريدةعمليات المجموعاتاختبارات الانتماءالعد باستخدام table()مراجعة - ضيوف الفعالية9إطارات البيانات
إنشاء إطارات البياناتالأعمدة والصفوفتصفية الصفوفالإضافة والترتيبمراجعة - تقرير المبيعاتتدرّب بنفسك: مترجم R عبر الإنترنت