Obsługa daty i czasu
Lekcja 13 z 14 w kursie Manipulowanie danymi w R w Coddy.
Język udostępnia wbudowane funkcje i klasy, które umożliwiają wydajną pracę z obiektami daty i czasu.
Klasy daty i czasu w R
R ma trzy główne klasy służące do pracy z datami i czasem:
Date: Reprezentuje daty bez czasuPOSIXct: Reprezentuje daty i czas jako liczbę sekund od 1 stycznia 1970 rokuPOSIXlt: Reprezentuje daty i czas jako listę składowych (rok, miesiąc, dzień itd.)
Tworzenie obiektów daty i czasu
Możesz tworzyć obiekty daty i czasu za pomocą następujących funkcji:
# Utwórz obiekt Date
today <- Sys.Date()
# Utwórz obiekt POSIXct
now <- Sys.time()
# Przekonwertuj ciąg znaków na obiekt Date
date_from_string <- as.Date("2023-06-15")
# Przekonwertuj ciąg znaków na obiekt POSIXct
datetime_from_string <- as.POSIXct("2023-06-15 14:30:00")Formatowanie obiektów daty i czasu
Użyj format(), aby przekształcić obiekty daty i czasu w ciągi znaków:
date <- as.Date("2023-06-15")
formatted_date <- format(date, "%B %d, %Y") # Zwraca: "June 15, 2023"Parsowanie ciągów daty i czasu
Aby sparsować ciągi daty i czasu, użyj as.Date() lub as.POSIXct() z ciągiem formatującym:
date_string <- "15/06/2023"
parsed_date <- as.Date(date_string, format = "%d/%m/%Y")Obliczenia na datach i czasie
R umożliwia wykonywanie operacji arytmetycznych na obiektach daty i czasu:
today <- Sys.Date()
next_week <- today + 7 # Dodaj 7 dni
time_diff <- as.numeric(next_week - today) # Oblicz różnicę w dniachWyodrębnianie składowych
Możesz wyodrębniać określone składowe z obiektów daty i czasu:
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")Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wyzwanie
ŚredniUtwórz funkcję, która przetwarza listę wydarzeń wraz z ich datami i godzinami. Funkcja powinna wykonać następujące operacje:
- Przekształć ciąg wejściowy w ramkę danych
- Przekształć kolumnę 'datetime' w obiekty POSIXct
- Wyodrębnij dzień tygodnia dla każdego wydarzenia
- użyj funkcji
weekdays(). Na przykład:weekdays(date)
- użyj funkcji
- Oblicz czas trwania w godzinach między każdym wydarzeniem a pierwszym wydarzeniem
Aby uzyskać datę i godzinę pierwszego wydarzenia, użyj:
mutate( datetime = as.POSIXct(datetime, format = "%Y-%m-%d %H:%M:%S"), first_date = min(datetime), ... )
- Sformatuj kolumnę 'datetime', aby wyświetlała tylko datę w formacie "YYYY-MM-DD"
- Utwórz nową kolumnę
time_categoryna podstawie godziny wydarzenia:- Jeśli godzina mieści się w przedziale od 5 do 11 (włącznie), ustaw wartość "Morning"
- Jeśli godzina mieści się w przedziale od 12 do 16 (włącznie), ustaw wartość "Afternoon"
- Jeśli godzina mieści się w przedziale od 17 do 20 (włącznie), ustaw wartość "Evening"
- W przeciwnym razie ustaw wartość "Night"
- Posortuj ramkę danych według pierwotnej daty i godziny
- Wyświetl wynikową ramkę danych wyłącznie z następującymi kolumnami (w tej kolejności):
event, datetime, day_of_week, duration_hours, date, time_category
Spróbuj swoich sił
# Wczytaj dane wejściowe
con <- file("stdin", "r")
input_data <- suppressWarnings(readLines(con))
# Przekształć wejściowy ciąg znaków w ramkę danych
events_df <- read.csv(text = input_data, stringsAsFactors = FALSE)
# TODO: Napisz poniżej kod przetwarzający ramkę danych zdarzeń
# 1. Przekształć kolumnę 'datetime' w obiekty POSIXct
# 2. Wyodrębnij dzień tygodnia dla każdego zdarzenia
# 3. Oblicz czas w godzinach między każdym zdarzeniem a pierwszym zdarzeniem
# 4. Sformatuj kolumnę 'datetime' tak, aby wyświetlała tylko datę w formacie "YYYY-MM-DD"
# 5. Utwórz nową kolumnę 'time_category' na podstawie godziny zdarzenia
# 6. Posortuj ramkę danych według pierwotnych wartości datetime
# Wyświetl wynikową ramkę danych
print(events_df)Wszystkie lekcje w sekcji Manipulowanie danymi w R
1Podstawy danych
Poznawanie struktur danychIndeksowanie w DataFrameWybieranie podzbioru danychKonwersja typów danychOperator potoku w R4Zaawansowana manipulacja danymi
Manipulowanie ciągami znakówObsługa daty i czasuFunkcje niestandardowe2Przekształcanie danych
Wprowadzenie do dplyrAgregowanie danych za pomocą dplyrŁączenie danych za pomocą dplyrPoćwicz samodzielnie: Kompilator R online