Menu
Coddy logo textTech

מפורמט ארוך לפורמט רחב

שיעור 10 מתוך 14 בקורס מניפולציה של נתונים ב-R של Coddy.

המרת נתונים מתבנית ארוכה לתבנית רחבה היא מיומנות חיונית בעיבוד נתונים, והיא שימושית במיוחד ליצירת ייצוגים תמציתיים יותר של נתונים. בשיעור הזה נתמקד בשימוש בפונקציה pivot_wider() מהחבילה tidyr כדי להפוך נתונים מתבנית ארוכה לתבנית רחבה.

1. הבנת תבניות ארוכות ורחבות

תבנית ארוכה: משתנים מאוחסנים בזוגות מפתח-ערך, כאשר עמודה אחת מכילה את שמות המשתנים ועמודה נוספת מכילה את הערכים.
תבנית רחבה: לכל משתנה יש עמודה משלו.

2. הפונקציה pivot_wider()

הפונקציה pivot_wider() מהחבילה tidyr משמשת להפיכת נתונים מתבנית ארוכה לתבנית רחבה. הנה התחביר הבסיסי שלה:

pivot_wider(data, names_from = "key", values_from = "value")

3. דוגמה: שימוש ב-pivot_wider()

נבחן דוגמה:


# טען את הספרייה הנדרשת
library(tidyr)

# צור מערך נתונים לדוגמה בפורמט ארוך
long_data <- data.frame(
  name = c("Alice", "Alice", "Alice", "Bob", "Bob", "Bob"),
  subject = c("math", "science", "history", "math", "science", "history"),
  score = c(85, 92, 78, 76, 88, 82)
)

# המר לפורמט רחב
wide_data <- pivot_wider(long_data, 
                         names_from = "subject",
                         values_from = "score")

print(wide_data)

4. הבנת הארגומנטים

  • names_from: מציין איזו עמודה מכילה את השמות עבור העמודות החדשות בתבנית הרחבה.
  • values_from: מציין איזו עמודה מכילה את הערכים עבור העמודות החדשות.

5. טיפול במספר עמודות ערכים

אפשר לבצע צירוף של מספר עמודות ערכים בו-זמנית:


long_data_multi <- data.frame(
  name = c("Alice", "Alice", "Bob", "Bob"),
  year = c(2022, 2023, 2022, 2023),
  score = c(85, 90, 76, 82),
  rank = c(2, 1, 3, 2)
)

wide_data_multi <- pivot_wider(long_data_multi,
                               names_from = year,
                               values_from = c(score, rank))

print(wide_data_multi)

על ידי שליטה בפונקציה pivot_wider(), תוכלו לעצב מחדש ביעילות את הנתונים שלכם מתבנית ארוכה לתבנית רחבה וליצור ייצוגים תמציתיים יותר לצורכי ניתוח ספציפיים ב-R.

quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

challenge icon

אתגר

קל

יש ליצור פונקציה שהופכת מערך נתונים בפורמט ארוך של ציוני תלמידים לפורמט רחב באמצעות הפונקציה pivot_wider() מהחבילה tidyr. הפונקציה צריכה לבצע את הפעולות הבאות:

  1. להמיר את מחרוזת הקלט למסגרת נתונים
  2. להשתמש ב־pivot_wider() כדי להפוך את הנתונים מפורמט ארוך לפורמט רחב
  3. לסדר את מסגרת הנתונים שהתקבלה לפי שם התלמיד (יש להשתמש ב־%>% arrange(student))
  4. להדפיס את מסגרת הנתונים בפורמט רחב

נסו בעצמכם

# קראו את הקלט
con <- file("stdin", "r")
input_string <- suppressWarnings(readLines(con))

# המירו את מחרוזת הקלט למסגרת נתונים
df <- read.csv(text = input_string, stringsAsFactors = FALSE)

# טענו את הספרייה הנדרשת
suppressPackageStartupMessages(library(tidyr))
suppressPackageStartupMessages(library(dplyr))

# TODO: כתבו את הקוד שלכם למטה כדי לשנות את מבנה מסגרת הנתונים
# רמז: השתמשו בפונקציה pivot_wider() כדי להמיר מפורמט ארוך לפורמט רחב
# אל תשכחו למיין את מסגרת הנתונים המתקבלת לפי שם התלמיד

# הדפיסו את התוצאה
# print(result)

כל השיעורים ביחידה מניפולציה של נתונים ב-R

תרגלו בעצמכם: קומפיילר R אונליין