Czasami przydatna jest praca z datami i godzinami, na przykład podczas drukowania i drukowania w czasie. R zapewnia klasy dla dat oraz dla dat i godzin. Klasy to Data, POSIXct i POSIXlt. Obiekty klasy Date lub POSIXct mają tryb numeryczny a obiekty klasy POSIXlt mają listę trybów. Spośród trzech typów funkcji typowych dla klas podanych powyżej, tylko obiekty as.Date(), as.POSIXct() i as.POSIXlt() istnieją dla obiektów daty i daty i godziny. Aby po prostu uzyskać znacznik daty i godziny w R, wpisz date() w wierszu polecenia R, który zwraca dzień tygodnia, datę i godzinę. Wynikiem jest charakter trybu i klasy. Funkcja daty systemowej Sys.Date() zwraca datę systemową i ma tryb numeryczny oraz klasę Data. Systemową funkcją daty i godziny jest Sys.time() i zwraca datę, godzinę i strefę czasową systemu i ma tryb numeryczny oraz klasy POSIXct i POSIXlt.
Daty są zwracane w formacie „Rok-Miesiąc-Dzień”, a godziny w formacie „godzina: minuta: sekunda”. Istnieje szereg funkcji, które działają na klasach daty i godziny, w tym weekdays (), które zwracają dzień tygodnia obiektów klasy Date, POSIXlt lub POSIXlt. Więcej funkcji można znaleźć na stronie pomocy dla DateTimeClasses, wprowadzając ?DateTimeClasses po znaku zachęty R. Funkcja as.Date() tworzy obiekt daty. Argumenty as.Date() to obiekt, który należy przekonwertować na datę; format, który podaje format obiektu pod względem roku, miesiąca i dnia; origin, który jest początkiem pierwszego argumentu i musi należeć do klasy Date lub POSIXct; i tz dla strefy czasowej. Jeśli użyty jest początek, konwertowanym obiektem może być dowolny obiekt numeryczny. Jeśli podano źródło, funkcja dodaje lub odejmuje wartości obiektu do lub od daty podanej przez argument pochodzenia i konwertuje wynik na datę. Przykładem odstępów tygodniowych jest
> as.Date (0: 3 * 7, „2000-1-1”)
[1] „2000-01-01” „2000-01-08” „2000-01-15” „2000-01-22”
.
Jeśli jako obiekt są używane daty, a daty nie są w formacie „rok-miesiąc-dzień”, należy podać format dat. Format jest zmienną znakową, w której miejsce roku jest o% Y, dzień o% d, a miesiąc o% m, na przykład
> as.Date („1/20/2000”, format = „% m /% d /% Y”)
[1] „2000-01-20”
Zauważ, że format jest formatem obiektu do konwersji, a nie formatem wyniku. Argument tz dotyczy strefy czasowej. Niektóre strefy czasowe są rozpoznawane, inne nie. Aby uzyskać więcej informacji, zobacz stronę pomocy as.Date(). Funkcja is.Date() sprawdza, czy obiekt jest datą i zwraca PRAWDA, jeśli tak, a FALSE w przeciwnym razie. Funkcje as.POSIXct () i as.POSIXlt () przyjmują te same argumenty co Date(), z tym wyjątkiem, że daty mogą również zawierać godzinę. Domyślny format czasu to% H:% M:% S dla godzin, minut i sekund. Na przykład:
> as.POSIXct („1/13/2000 00:30:00”, format = „% m /% d /% Y% H:% M:% S”)
[1] „2000-01-13 00:30:00 CST”
Daty, daty i godziny mogą być obsługiwane przez dodawanie i odejmowanie. Dziesiętne dla czasów są poprawnie przeliczane. Daty w funkcji Date () są zwiększane o dni; czasy w funkcji daty i czasu są zwiększane o sekundy. Przykłady:
> as.POSIXct(Sys.time())+1:4*1000
[1] “2014-01-12 15:08:03 CST” “2014-01-12 15:24:43 CST”
[3] “2014-01-12 15:41:23 CST” “2014-01-12 15:58:03 CST”
> mode(as.POSIXct(Sys.time())+1:4*1000)
[1] “numeric”
> as.POSIXlt(Sys.time())+1:4*1000
[1] “2014-01-12 15:08:34 CST” “2014-01-12 15:25:14 CST”
[3] “2014-01-12 15:41:54 CST” “2014-01-12 15:58:34 CST”
> mode(as.POSIXlt(Sys.time())+1:4*1000)
[1] “numeric”
> as.POSIXlt(Sys.time()+1:4*1000)
[1] “2014-01-12 15:09:14 CST” “2014-01-12 15:25:54 CST”
[3] “2014-01-12 15:42:34 CST” “2014-01-12 15:59:14 CST”
> mode(as.POSIXlt(Sys.time()+1:4*1000))
[1] “list”
Daty można również różnicować. Klasą różnic między datami lub datami i godzinami jest difftime. Funkcje difftime () i as.difftime () istnieją, ale nie są tutaj omówione. Przykładem różnicy dat jest
> (Sys.Date()- as.Date(“2000-1-1”))
Time difference of 5125 days
> mode(Sys.Date()- as.Date(“2000-1-1”))
[1] “numeric”
> class(Sys.Date()- as.Date(“2000-1-1”))
[1] “difftime”
Więcej informacji na temat funkcji daty i godziny można znaleźć, wprowadzając ?Date, ?as.Date, ?as.POSIXct, ?as.POSIXlt, lub ? DateTimeClasses po znaku zachęty R