Menu
Coddy logo textTech

טיפול בתאריך ובשעה

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

השפה מספקת פונקציות ומחלקות מובנות לעבודה יעילה עם אובייקטים של תאריך ושעה.

מחלקות תאריך ושעה ב-R

ל-R יש שלוש מחלקות עיקריות לעבודה עם תאריכים ושעות:

  • Date: מייצגת תאריכים ללא שעות
  • POSIXct: מייצגת תאריכים ושעות כמספר השניות שחלפו מאז 1 בינואר 1970
  • POSIXlt: מייצגת תאריכים ושעות כרשימה של רכיבים (שנה, חודש, יום וכו׳)

יצירת אובייקטים של תאריך ושעה

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

# צור אובייקט Date
today <- Sys.Date()

# צור אובייקט POSIXct
now <- Sys.time()

# המר מחרוזת לאובייקט Date
date_from_string <- as.Date("2023-06-15")

# המר מחרוזת לאובייקט POSIXct
datetime_from_string <- as.POSIXct("2023-06-15 14:30:00")

עיצוב אובייקטים של תאריך ושעה

השתמשו ב-format() כדי להמיר אובייקטים של תאריך ושעה למחרוזות:

date <- as.Date("2023-06-15")
formatted_date <- format(date, "%B %d, %Y")  # מחזיר: "June 15, 2023"

ניתוח מחרוזות של תאריך ושעה

כדי לנתח מחרוזות של תאריך ושעה, השתמשו ב-as.Date() או ב-as.POSIXct() עם מחרוזת עיצוב:

date_string <- "15/06/2023"
parsed_date <- as.Date(date_string, format = "%d/%m/%Y")

חישובי תאריך ושעה

R מאפשרת לבצע פעולות חשבון על אובייקטים של תאריך ושעה:

today <- Sys.Date()
next_week <- today + 7  # הוסף 7 ימים

time_diff <- as.numeric(next_week - today)  # חשב את ההפרש בימים

חילוץ רכיבים

אפשר לחלץ רכיבים מסוימים מאובייקטים של תאריך ושעה:

date <- as.Date("2023-06-15")
year <- format(date, "%Y")
month <- format(date, "%m")
day <- format(date, "%d")
hour <- format(date, "%H")
minute <- format(date, "%M")
second <- format(date, "%S")
quiz iconבחנו את עצמכם

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

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

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

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

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

challenge icon

אתגר

בינוני

צרו פונקציה שמעבדת רשימת אירועים עם התאריכים והשעות שלהם. הפונקציה צריכה לבצע את הפעולות הבאות:

  1. המרת מחרוזת הקלט למסגרת נתונים
  2. ניתוח העמודה 'datetime' לאובייקטים מסוג POSIXct
  3. חילוץ היום בשבוע של כל אירוע
    • השתמשו בפונקציה weekdays(). לדוגמה: weekdays(date) 
  4. חישוב משך הזמן בשעות בין כל אירוע לאירוע הראשון
    • כדי לקבל את התאריך והשעה הראשונים, השתמשו ב:   

      mutate(
      	datetime = as.POSIXct(datetime, format = "%Y-%m-%d %H:%M:%S"),
      	first_date = min(datetime),
      	...
      )
  5. עיצוב העמודה 'datetime' כך שתציג את התאריך בלבד בפורמט "YYYY-MM-DD"
  6. יצירת עמודה חדשה time_category על סמך שעת האירוע:
    • אם השעה בין 5 ל-11 (כולל), קבעו את הערך ל-"Morning"
    • אם השעה בין 12 ל-16 (כולל), קבעו את הערך ל-"Afternoon"
    • אם השעה בין 17 ל-20 (כולל), קבעו את הערך ל-"Evening"
    • אחרת, קבעו את הערך ל-"Night"
  7. מיון מסגרת הנתונים לפי התאריך והשעה המקוריים
  8. הדפסת מסגרת הנתונים המתקבלת בלבד, עם העמודות הבאות (בסדר הזה): event, datetime, day_of_week, duration_hours, date, time_category

נסו בעצמכם

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

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

# TODO: כתבו את הקוד שלכם למטה כדי לעבד את מסגרת הנתונים של האירועים
# 1. המירו את העמודה 'datetime' לאובייקטים מסוג POSIXct
# 2. חלצו את היום בשבוע של כל אירוע
# 3. חשבו את משך הזמן בשעות בין כל אירוע לאירוע הראשון
# 4. עצבו את העמודה 'datetime' כך שתציג רק את התאריך בפורמט "YYYY-MM-DD"
# 5. צרו עמודה חדשה 'time_category' על סמך השעה של האירוע
# 6. מיינו את מסגרת הנתונים לפי התאריך והשעה המקוריים

# הדפיסו את מסגרת הנתונים שהתקבלה
print(events_df)

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

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