מפורמט רחב לפורמט ארוך
שיעור 9 מתוך 14 בקורס מניפולציה של נתונים ב-R של Coddy.
בשיעור הזה נתמקד בשימוש בפונקציה pivot_longer() מהחבילה tidyr כדי להמיר נתונים מתבנית רחבה לתבנית ארוכה.
הבנת תבניות רחבות וארוכות
תבנית רחבה: לכל משתנה יש עמודה משלו.
תבנית ארוכה: המשתנים מאוחסנים בצמדי מפתח-ערך, עם עמודה אחת לשמות המשתנים ועמודה נוספת לערכים.
הפונקציה pivot_longer()
הפונקציה pivot_longer() מהחבילה tidyr משמשת להמרת נתונים מתבנית רחבה לתבנית ארוכה. הנה התחביר הבסיסי שלה:
pivot_longer(data, cols, names_to = "key", values_to = "value")דוגמה:
# טען את הספרייה הנדרשת
library(tidyr)
# צור מערך נתונים לדוגמה בפורמט רחב
wide_data <- data.frame(
name = c("Alice", "Bob", "Charlie"),
math = c(85, 76, 90),
science = c(92, 88, 75),
history = c(78, 82, 85)
)
# המר לפורמט ארוך
long_data <- pivot_longer(wide_data,
cols = c(math, science, history),
names_to = "subject",
values_to = "score")
print(long_data)פלט:
# טיבל: 9 × 3
name subject score
<chr> <chr> <dbl>
1 Alice math 85
2 Alice science 92
3 Alice history 78
4 Bob math 76
5 Bob science 88
6 Bob history 82
7 Charlie math 90
8 Charlie science 75
9 Charlie history 85במקום שיהיו לנו 4 עמודות: name, math, science ו-history, יש לנו 3 עמודות: name, subject, score
הבנת הארגומנטים
cols: מציין אילו עמודות להפוך לתבנית ארוכה יותר.names_to: נותן שם לעמודה החדשה שתכיל את שמות העמודות מהתבנית הרחבה.values_to: נותן שם לעמודה החדשה שתכיל את הערכים.
חשיבות בניתוח נתונים
לעיתים קרובות מעדיפים נתונים בתבנית ארוכה כי הם:
- קלים יותר לעיבוד ולניתוח באמצעות כלים כמו
dplyr - מתאימים יותר למידול סטטיסטי ולהצגה חזותית
- תואמים לעקרונות של נתונים מסודרים
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
אתגר
קלצרו פונקציה שממירה מערך נתונים בפורמט רחב של ציוני בחינות של תלמידים לפורמט ארוך באמצעות הפונקציה pivot_longer() מהחבילה tidyr. הפונקציה צריכה לבצע את הפעולות הבאות:
- להמיר את מחרוזת הקלט למסגרת נתונים
- להשתמש ב־
pivot_longer()כדי להמיר את הנתונים מפורמט רחב לפורמט ארוך - לשנות את שמות העמודות שנוצרו ל־"subject" ול־"score"
- לסדר את הנתונים לפי שם התלמיד ולאחר מכן לפי המקצוע
- להדפיס את מסגרת הנתונים שנוצרה בפורמט ארוך
נסו בעצמכם
# קראו את הקלט
con <- file("stdin", "r")
input_string <- suppressWarnings(readLines(con))
# המירו את מחרוזת הקלט למסגרת נתונים
data <- read.csv(text = input_string, stringsAsFactors = FALSE)
# טענו את החבילה הנדרשת
suppressPackageStartupMessages(library(tidyr))
suppressPackageStartupMessages(library(dplyr))
# TODO: כתבו את הקוד שלכם למטה כדי לשנות את מבנה הנתונים
# השתמשו ב-pivot_longer() כדי להמיר מפורמט רחב לפורמט ארוך
# שנו את שמות העמודות ל-"subject" ול-"score"
# סדרו את הנתונים לפי שם התלמיד ולאחר מכן לפי מקצוע
# הדפיסו את מסגרת הנתונים שנוצרה בפורמט ארוך
print(result)כל השיעורים ביחידה מניפולציה של נתונים ב-R
תרגלו בעצמכם: קומפיילר R אונליין