שיעורי מודול (2/2)
מוטציות ואגרגציות
מעבר לבחירה ולסינון, dplyr מציעה יכולות עוצמתיות ליצור עמודות מחושבות חדשות ולסכם נתונים על ידי צבירה לקבוצות.
יצירת עמודות חדשות: mutate()
הפועל mutate() מאפשר לך לחשב עמודות חדשות או לשנות עמודות קיימות, תוך שמירה על כל העמודות המקוריות ללא פגע.
# Adds a 'double_salary' column computed as 'salary' multiplied by 2
df %>%
mutate(double_salary = salary * 2)
# You can create multiple columns at once
df %>%
mutate(
total_cost = quantity * price,
tax = total_cost * 0.22
)קיבוץ וצבירת: group_by() ו-summarise()
לעתים קרובות, ניתוח נתונים דורש חישוב נתונים סטטיסטיים מסכם (למשל ממוצע, סכום, ספירה) עבור קבוצות ספציפיות של שורות (לדוגמה, חישוב השכר הממוצע עבור כל מחלקה).
1. group_by()
מקבץ את מסגרת הנתונים לפי ערכים של עמודה אחת או יותר. כשלעצמו, זה לא משנה את המראה החזותי של הנתונים, אבל זה מאותת ל-dplyr שיש לבצע פעולות עוקבות "קבוצה אחר קבוצה".
2. summarise() (או summarize())
מכווץ שורות רבות לתוך שורת סיכום אחת על ידי יישום פונקציות סטטיסטיות כמו mean(), sum(), min(), max(), או n() (אשר סופרות).
# Calculates the average salary per department
df %>%
group_by(department) %>%
summarise(mean_salary = mean(salary))אם ברצונך לספור כמה רשומות שייכות לכל קבוצה:
# Counts how many employees are in each city
df %>%
group_by(city) %>%
summarise(count = n())נסה זאת בעצמך
תרגיל 1: צור עמודה מחושבת
בהינתן מסגרת הנתונים df, צור עמודה חדשה בשם total_price על ידי הכפלת עמודת הכמות בעמודת המחיר באמצעות mutate(). שמור את התוצאה ב-df_new.
הצג רמז
השתמש ב-mutate(total_price = quantity * price) בתוך צינור ב-df.
הפתרון זמין לאחר 3 ניסיונות
תרגיל 2: קבץ וסכם עם הממוצע
חשב את הממוצע של עמודת השכר, קבץ את הרשומות לפי עמודת המחלקה. שמור את העמודה המצטברת עם השם mean_salary והקצה את התוצאה הסופית ל-df_grouped.
הצג רמז
Usa df %>% group_by(department) %>% summarise(mean_salary = mean(salary))
הפתרון זמין לאחר 3 ניסיונות
תרגיל 3: ספירת אלמנטים לקבוצה
ספור את מספר השורות עבור כל עיר (עמודת עיר). הקצה את הספירה למשתנה ה-count בתוך summarise() באמצעות הפונקציה n() ושמור את התוצאה הסופית ב-df_counts.
הצג רמז
שילוב group_by(city) con summarise(count = n()) בצנרת אחת.
הפתרון זמין לאחר 3 ניסיונות
תרגיל 4: סיכומים מרובים
חשב את הערך המינימלי (מיני_מחיר) והערך המקסימלי (מחיר_מקסימלי) של עמודת המחיר המקבצת לפי עמודת הקטגוריה. שמור את התוצאה ב-df_summary.
הצג רמז
בתוך sumrise(), הפרד את המדדים min_price = min(price) ו-max_price = max(price) עם פסיק.
הפתרון זמין לאחר 3 ניסיונות
תרגיל 5: קיבוץ ומסננים משולבים
כתוב צינור שמקבץ את df לפי עמודת המחלקה, מחשב את ממוצע השכר שמציל אותו בעמודה החדשה avg_salary באמצעות mutate() (הערה: השתמש ב-mutate, לא בסיכום, כדי לשמור את כל השורות), ולבסוף מסנן לשמור רק רשומות עם שכר גבוה יותר מ-avg_salary. שמור במיל.
הצג רמז
Usa df %>% group_by(department) %>% mutate(avg_salary = mean(salary)) %>% filter(salary > avg_salary)
הפתרון זמין לאחר 3 ניסיונות