Menu
Coddy logo textTech

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

שיעור 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
  • מתאימים יותר למידול סטטיסטי ולהצגה חזותית
  • תואמים לעקרונות של נתונים מסודרים
quiz iconבחנו את עצמכם

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

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

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

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

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

challenge icon

אתגר

קל

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

  1. להמיר את מחרוזת הקלט למסגרת נתונים
  2. להשתמש ב־pivot_longer() כדי להמיר את הנתונים מפורמט רחב לפורמט ארוך
  3. לשנות את שמות העמודות שנוצרו ל־"subject" ול־"score"
  4. לסדר את הנתונים לפי שם התלמיד ולאחר מכן לפי המקצוע
  5. להדפיס את מסגרת הנתונים שנוצרה בפורמט ארוך

נסו בעצמכם

# קראו את הקלט
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 אונליין