שיעורי מודול (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 (NA הסר):
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)נסה זאת בעצמך
בהינתן הטמפרטורות הווקטוריות, חשב את הממוצע ושמור אותו במשתנה mean_temp. לאחר מכן חשב את החציון ושמור אותו ב-median_temp.
הצג רמז
USa mean_temp <- mean(temperatures) e median_temp <- median(temperatures)
הפתרון זמין לאחר 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 ניסיונות
בהתחשב במכירת מסגרת הנתונים, השתמש בפונקציה aggregate() כדי לחשב את הסכום (FUN = sum) של עמודת ההכנסה המקובצת לפי עמודת האזור. שמור את התוצאה במשתנה region_sales.
הצג רמז
השתמש: region_sales <- aggregate(הכנסה ~ אזור, נתונים = מכירות, FUN = סכום)
הפתרון זמין לאחר 3 ניסיונות
בהינתן מוצרי מסגרת הנתונים, השתמש בפונקציה subset() כדי לסנן רק את המוצרים השייכים לקטגוריית 'אלקטרוניקה' (קטגוריה == 'אלקטרוניקה') ומחירם גבוה מ-100 (מחיר > 100). שמור את התוצאה במשתנה יקר_אלקטרוניקה.
הצג רמז
השתמש: יקר_אלקטרוניקה <- subset(מוצרים, קטגוריה == 'אלקטרוניקה' ומחיר > 100)
הפתרון זמין לאחר 3 ניסיונות