دروس الوحدة (2/2)
الاستكشاف والتجميع
تم إنشاء R في المقام الأول كبيئة إحصائية، لذلك فهو يوفر العديد من الوظائف المضمنة لتحليل وتلخيص وفهم توزيع البيانات في المتجهات أو الجداول.
الوظائف الإحصائية الأساسية
يتيح لك R حساب المقاييس الرئيسية للمركز بسهولة والانتشار على المتجهات الرقمية:
mean(x): حساب الوسط الحسابي للعناصر.median(x): حساب الوسيط (القيمة الوسطى).sd(x): حساب الانحراف المعياري (مقياس لمدى انتشار البيانات).min(x)وmax(x): إرجاع الحد الأدنى والحد الأقصى للقيم على التوالي.
values <- c(10, 12, 15, 18, 20, 22)
avg <- mean(values)
dispersion <- sd(values)
cat("Mean:", avg, "- Std Dev:", round(dispersion, 2), "\n")التعامل مع البيانات المفقودة (NA)
في العالم الحقيقي، غالبًا ما تحتوي مجموعات البيانات على قيم مفقودة، ممثلة في R بواسطة الكيان الخاص NA (غير متوفر).
إذا حاولت حساب المتوسط أو أي تجميع آخر على متجه يحتوي حتى على NA واحد، فسوف يُرجع R NA كنتيجة. لتجاهل القيم المفقودة، يجب عليك تمرير الوسيطة المنطقية na.rm = TRUE (إزالة غير متاحة):
temperatures <- c(18, 21, NA, 24, 19)
# This will return NA
print(mean(temperatures))
# This will ignore the NA and perform the calculation on valid values
print(mean(temperatures, na.rm = TRUE))ملخص عالمي مع summary()
تعد الدالة summary() أداة قوية توفر نظرة عامة إحصائية كاملة لمتجه أو إطار بيانات كامل، حيث تعرض الحد الأدنى والربيع الأول والوسيط والمتوسط والربيع الثالث والحد الأقصى:
prices <- c(5, 10, 15, 20, 100)
print(summary(prices))تجميع البيانات باستخدام aggregate
عند العمل باستخدام إطارات البيانات، من الشائع حساب إحصائيات التلخيص (مثل المتوسط أو المجموع) لمجموعات أو فئات محددة. تعمل الدالة aggregate() في R على تبسيط هذه العملية:
df <- data.frame(
department = c("HR", "IT", "HR", "IT"),
salary = c(3000, 4500, 3200, 4800)
)
# Calcola la media dei salari per dipartimento
avg_salaries <- aggregate(salary ~ department, data = df, FUN = mean)
print(avg_salaries)بناء الجملة salary ~ department يعني "تحليل المتغير salary بناءً على المتغير department". تحدد الوسيطة FUN = mean أننا نريد حساب المتوسط الحسابي لكل مجموعة.
التصفية المتقدمة باستخدام subset
توفر الدالة subset() طريقة بديهية وأنيقة لاستخراج مجموعات فرعية من الصفوف والأعمدة من إطار البيانات، مع تجنب استخدام الأقواس المربعة المعقدة:
employees <- data.frame(
name = c("Alice", "Bob", "Charlie"),
age = c(25, 34, 29),
active = c(TRUE, FALSE, TRUE)
)
# Filtra solo i dipendenti attivi con età superiore a 28
active_employees <- subset(employees, active == TRUE & age > 28)جربه بنفسك
بالنظر إلى درجات الحرارة المتجهة، احسب المتوسط واحفظه في المتغيرmain_temp. ثم احسب الوسيط واحفظه في median_temp.
إظهار التلميح
الولايات المتحدة الأمريكية middle_temp <- متوسط (درجات الحرارة) ومتوسط_درجة الحرارة <- متوسط (درجات الحرارة)
الحل متاح بعد 3 من المحاولات
نظرا لمتجه الدرجات الذي يحتوي على قيمة NA، احسب الانحراف المعياري للمتجه باستثناء القيم المفقودة، واحفظه في متغير sd_scores.
إظهار التلميح
استخدم الدالة sd() مع الوسيطة na.rm = TRUE: sd_scores <- sd(scores, na.rm = TRUE)
الحل متاح بعد 3 من المحاولات
بالنظر إلى إطار البيانات df، احصل على الملخص الإحصائي لعمود القيم واحفظه في المتغير stats_summary.
إظهار التلميح
استخرج العمود باستخدام عامل التشغيل $ وقم بتمريره إلى Summary(): stats_summary <- Summary(df$values)
الحل متاح بعد 3 من المحاولات
بالنظر إلى مبيعات إطار البيانات، استخدم الدالة التجميعية () لحساب المجموع (FUN = مجموع) عمود الإيرادات المجمع حسب عمود المنطقة. احفظ النتيجة في متغير Region_sales.
إظهار التلميح
الاستخدام: Region_sales <- التجميعي (الإيرادات ~ المنطقة، البيانات = المبيعات، FUN = المبلغ)
الحل متاح بعد 3 من المحاولات
بالنظر إلى منتجات إطار البيانات، استخدم الدالة subset() لتصفية فقط المنتجات التي تنتمي إلى فئة "الإلكترونيات" (الفئة == "الإلكترونيات") ولها سعر أكبر من 100 (السعر > 100). احفظ النتيجة في المتغير Cheap_electronics.
إظهار التلميح
الاستخدام: إلكترونيات باهظة الثمن <- مجموعة فرعية (المنتجات، الفئة == 'إلكترونيات' والسعر > 100)
الحل متاح بعد 3 من المحاولات