מפורמט ארוך לפורמט רחב
שיעור 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.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
אתגר
קליש ליצור פונקציה שהופכת מערך נתונים בפורמט ארוך של ציוני תלמידים לפורמט רחב באמצעות הפונקציה pivot_wider() מהחבילה tidyr. הפונקציה צריכה לבצע את הפעולות הבאות:
- להמיר את מחרוזת הקלט למסגרת נתונים
- להשתמש ב־
pivot_wider()כדי להפוך את הנתונים מפורמט ארוך לפורמט רחב - לסדר את מסגרת הנתונים שהתקבלה לפי שם התלמיד (יש להשתמש ב־
%>% arrange(student)) - להדפיס את מסגרת הנתונים בפורמט רחב
נסו בעצמכם
# קראו את הקלט
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 אונליין