דילוג לתוכן המרכזי
מודול 4 · שיעור 2 מתוך 28/10 בקורס~15 min
שיעורי מודול (2/2)

מוטציות ואגרגציות

מעבר לבחירה ולסינון, dplyr מציעה יכולות עוצמתיות ליצור עמודות מחושבות חדשות ולסכם נתונים על ידי צבירה לקבוצות.


יצירת עמודות חדשות: mutate()

הפועל mutate() מאפשר לך לחשב עמודות חדשות או לשנות עמודות קיימות, תוך שמירה על כל העמודות המקוריות ללא פגע.

R
# 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() (אשר סופרות).

R
# Calculates the average salary per department
df %>%
  group_by(department) %>%
  summarise(mean_salary = mean(salary))

אם ברצונך לספור כמה רשומות שייכות לכל קבוצה:

R
# Counts how many employees are in each city
df %>%
  group_by(city) %>%
  summarise(count = n())

נסה זאת בעצמך

תרגיל 1: צור עמודה מחושבת

פעילות גופנית#r.m4.l2.e1
ניסיונות: 0טוען...

בהינתן מסגרת הנתונים df, צור עמודה חדשה בשם total_price על ידי הכפלת עמודת הכמות בעמודת המחיר באמצעות mutate(). שמור את התוצאה ב-df_new.

טוען עורך...
הצג רמז

השתמש ב-mutate(total_price = quantity * price) בתוך צינור ב-df.

הפתרון זמין לאחר 3 ניסיונות

תרגיל 2: קבץ וסכם עם הממוצע

פעילות גופנית#r.m4.l2.e2
ניסיונות: 0טוען...

חשב את הממוצע של עמודת השכר, קבץ את הרשומות לפי עמודת המחלקה. שמור את העמודה המצטברת עם השם mean_salary והקצה את התוצאה הסופית ל-df_grouped.

טוען עורך...
הצג רמז

Usa df %>% group_by(department) %>% summarise(mean_salary = mean(salary))

הפתרון זמין לאחר 3 ניסיונות

תרגיל 3: ספירת אלמנטים לקבוצה

פעילות גופנית#r.m4.l2.e3
ניסיונות: 0טוען...

ספור את מספר השורות עבור כל עיר (עמודת עיר). הקצה את הספירה למשתנה ה-count בתוך summarise() באמצעות הפונקציה n() ושמור את התוצאה הסופית ב-df_counts.

טוען עורך...
הצג רמז

שילוב group_by(city) con summarise(count = n()) בצנרת אחת.

הפתרון זמין לאחר 3 ניסיונות

תרגיל 4: סיכומים מרובים

פעילות גופנית#r.m4.l2.e4
ניסיונות: 0טוען...

חשב את הערך המינימלי (מיני_מחיר) והערך המקסימלי (מחיר_מקסימלי) של עמודת המחיר המקבצת לפי עמודת הקטגוריה. שמור את התוצאה ב-df_summary.

טוען עורך...
הצג רמז

בתוך sumrise(), הפרד את המדדים min_price = min(price) ו-max_price = max(price) עם פסיק.

הפתרון זמין לאחר 3 ניסיונות

תרגיל 5: קיבוץ ומסננים משולבים

פעילות גופנית#r.m4.l2.e5
ניסיונות: 0טוען...

כתוב צינור שמקבץ את df לפי עמודת המחלקה, מחשב את ממוצע השכר שמציל אותו בעמודה החדשה avg_salary באמצעות mutate() (הערה: השתמש ב-mutate, לא בסיכום, כדי לשמור את כל השורות), ולבסוף מסנן לשמור רק רשומות עם שכר גבוה יותר מ-avg_salary. שמור במיל.

טוען עורך...
הצג רמז

Usa df %>% group_by(department) %>% mutate(avg_salary = mean(salary)) %>% filter(salary > avg_salary)

הפתרון זמין לאחר 3 ניסיונות