Suche…


Syntax

  • ymd_hms (..., quiet = FALSE, tz = "UTC"), locale = Sys.getlocale ("LC_TIME"))
  • jetzt (tzone = "")
  • Intervall (Start, Ende, Tzone = Attr (Start, "Tzone"))
  • Dauer (num = NULL, Einheiten = "Sekunden", ...)
  • Periode (num = NULL, Einheiten = "Sekunde", ...)

Bemerkungen

So installieren Sie das Paket von CRAN:

install.packages("lubridate")

So installieren Sie die Entwicklungsversion von Github:

library(devtools)
# dev mode allows testing of development packages in a sandbox, without interfering
# with the other packages you have installed.
dev_mode(on=T)
install_github("hadley/lubridate")
dev_mode(on=F)

So erhalten Sie Vignetten für das Lubridat-Paket:

vignette("lubridate")

Um Hilfe zu erhalten über eine Funktion foo :

help(foo)     # help about function foo
?foo          # same thing

# Example
# help("is.period")
# ?is.period

Um Beispiele für eine Funktion zu erhalten, foo :

example("foo")

# Example
# example("interval")

Analysieren von Datumsangaben und Datumsangaben von Zeichenfolgen mit Lubridat

Das lubridate Paket bietet praktische Funktionen zum Formatieren von datei- und datetime-Objekten aus Zeichenketten. Die Funktionen sind Permutationen von

Brief Zu analysierendes Element Basis-R-Äquivalent
y Jahr %y , %Y
m (mit y und d) Monat %m , %b , %h , %B
d Tag %d , %e
h Stunde %H , %I%p
m (mit h und s) Minute %M
s Sekunden %S

zB ymd() zum Parsen eines Datums mit dem Jahr gefolgt vom Monat gefolgt vom Tag, zB "2016-07-22" oder ymd_hms() zum Parsen einer Datumszeit in der Reihenfolge Jahr, Monat, Tag, Stunden, Minuten, Sekunden, zB "2016-07-22 13:04:47" .

Die Funktionen können die meisten Trennzeichen (wie / , - und Whitespace) ohne zusätzliche Argumente erkennen. Sie arbeiten auch mit inkonsistenten Trennzeichen.


Termine

Die Date-Funktionen geben ein Objekt der Klasse Date .

library(lubridate) 

mdy(c(' 07/02/2016 ', '7 / 03 / 2016', ' 7 / 4 / 16 '))
## [1] "2016-07-02" "2016-07-03" "2016-07-04"

ymd(c("20160724","2016/07/23","2016-07-25"))    # inconsistent separators
## [1] "2016-07-24" "2016-07-23" "2016-07-25"

Datumsangaben

Dienstprogrammfunktionen

Datenzeiten können mit ymd_hms Varianten einschließlich ymd_hm und ymd_h . Alle datetime-Funktionen können ein tz Zeitzonenargument akzeptieren, das dem von as.POSIXct oder strptime , jedoch standardmäßig "UTC" anstelle der lokalen Zeitzone verwendet.

Die datetime-Funktionen geben ein Objekt der Klasse POSIXct .

x <- c("20160724 130102","2016/07/23 14:02:01","2016-07-25 15:03:00")
ymd_hms(x, tz="EST")
## [1] "2016-07-24 13:01:02 EST" "2016-07-23 14:02:01 EST"
## [3] "2016-07-25 15:03:00 EST"

ymd_hms(x)
## [1] "2016-07-24 13:01:02 UTC" "2016-07-23 14:02:01 UTC"
## [3] "2016-07-25 15:03:00 UTC"

Parser-Funktionen

lubridate enthält außerdem drei Funktionen zum Analysieren von Datumsangaben mit einer Formatierungszeichenfolge wie as.POSIXct oder strptime :

Funktion Ausgabeklasse Formatierungszeichenfolgen werden akzeptiert
parse_date_time POSIXct Flexibel. Akzeptiert strptime mit % oder lubridate datetime Funktionsnamenstil, zB "ymd hms" . Akzeptiert einen Ordnungsvektor für heterogene Daten und schätzt, ob dies angemessen ist.
parse_date_time2 Default POSIXct; Wenn lt = TRUE , POSIXlt Streng Akzeptiert nur strptime Token (mit oder ohne % ) aus einer begrenzten Menge.
fast_strptime Default POSIXlt; wenn lt = FALSE , POSIXct Streng Akzeptiert nur % separiert strptime Token mit Trennzeichen ( - , / , : , etc.) aus einer begrenzten Menge.
x <- c('2016-07-22 13:04:47', '07/22/2016 1:04:47 pm')

parse_date_time(x, orders = c('mdy Imsp', 'ymd hms'))
## [1] "2016-07-22 13:04:47 UTC" "2016-07-22 13:04:47 UTC"

x <- c('2016-07-22 13:04:47', '2016-07-22 14:47:58')

parse_date_time2(x, orders = 'Ymd HMS')
## [1] "2016-07-22 13:04:47 UTC" "2016-07-22 14:47:58 UTC"

fast_strptime(x, format = '%Y-%m-%d %H:%M:%S')
## [1] "2016-07-22 13:04:47 UTC" "2016-07-22 14:47:58 UTC"

parse_date_time2 und fast_strptime verwenden aus parse_date_time2 fast_strptime einen schnellen C-Parser.

?parse_date_time zum Formatieren von Tokens finden Sie unter ?parse_date_time .

Analysieren von Datum und Uhrzeit in Lubridate

Lubridate bietet ymd() Funktionsserien zum Analysieren von Zeichenketten in Datumsangaben. Die Buchstaben y, m und d entsprechen den Elementen year, month und day eines Datums / einer Uhrzeit.

mdy("07-21-2016")                 # Returns Date

## [1] "2016-07-21"

mdy("07-21-2016", tz = "UTC")     # Returns a vector of class POSIXt

## "2016-07-21 UTC"

dmy("21-07-2016")                 # Returns Date

## [1] "2016-07-21"

dmy(c("21.07.2016", "22.07.2016")) # Returns vector of class Date

## [1] "2016-07-21" "2016-07-22"

Datum und Uhrzeit in Lubridate bearbeiten

date <- now()
date
## "2016-07-22 03:42:35 IST"

year(date)
## 2016

minute(date)
## 42

wday(date, label = T, abbr = T)
# [1] Fri
# Levels: Sun < Mon < Tues < Wed < Thurs < Fri < Sat

day(date) <- 31
## "2016-07-31 03:42:35 IST"

# If an element is set to a larger value than it supports, the difference
#  will roll over into the next higher element
day(date) <- 32
## "2016-08-01 03:42:35 IST"

Momente

Ein Moment ist ein bestimmter Zeitpunkt. Jedes Datums- / Uhrzeitobjekt, das sich auf einen Zeitpunkt bezieht, wird als Moment erkannt. Um zu testen, ob ein Objekt ein Moment ist, verwenden Sie is.instant .

library(lubridate)

today_start <- dmy_hms("22.07.2016 12:00:00", tz = "IST") # default tz="UTC"
today_start
## [1] "2016-07-22 12:00:00 IST"
is.instant(today_start)
## [1] TRUE

now_dt <- ymd_hms(now(), tz="IST")
now_dt
## [1] "2016-07-22 13:53:09 IST"
is.instant(now_dt)
## [1] TRUE

is.instant("helloworld")
## [1] FALSE
is.instant(60)
## [1] FALSE

Intervalle, Dauern und Perioden

Intervalle sind die einfachste Möglichkeit, Zeiträume in Lubridate aufzuzeichnen. Ein Intervall ist eine Zeitspanne, die zwischen zwei bestimmten Zeitpunkten liegt .

# create interval by substracting two instants
today_start <- ymd_hms("2016-07-22 12-00-00", tz="IST")
today_start
## [1] "2016-07-22 12:00:00 IST"
today_end <- ymd_hms("2016-07-22 23-59-59", tz="IST")
today_end
## [1] "2016-07-22 23:59:59 IST"
span <- today_end - today_start
span
## Time difference of 11.99972 hours
as.interval(span, today_start)
## [1] 2016-07-22 12:00:00 IST--2016-07-22 23:59:59 IST

# create interval using interval() function
span <- interval(today_start, today_end)
[1] 2016-07-22 12:00:00 IST--2016-07-22 23:59:59 IST

Die Dauer misst die genaue Zeit zwischen zwei Zeitpunkten.

duration(60, "seconds")
## [1] "60s"

duration(2, "minutes")
## [1] "120s (~2 minutes)"

Hinweis: Einheiten, die größer als Wochen sind, werden aufgrund ihrer Variabilität nicht verwendet.

Dauer kann mit Hilfe von dseconds , dminutes und anderen dminutes Dauer erstellt werden.
Führen Sie ?quick_durations für eine vollständige Liste aus.

dseconds(60)
## [1] "60s"

dhours(2)
## [1] "7200s (~2 hours)"

dyears(1)
## [1] "31536000s (~365 days)"

Dauer kann abgezogen und zu Zeitpunkten addiert werden, um neue Zeitpunkte zu erhalten.

today_start + dhours(5)
## [1] "2016-07-22 17:00:00 IST"

today_start + dhours(5) + dminutes(30) + dseconds(15)
## [1] "2016-07-22 17:30:15 IST"

Dauer kann aus Intervallen erstellt werden.

as.duration(span)
[1] "43199s (~12 hours)"

Perioden messen die Änderung der Uhrzeit zwischen zwei Zeitpunkten.

Perioden können mit der period sowie anderen Hilfsfunktionen wie seconds , hours usw. erstellt werden. Um eine vollständige Liste der Periodenhilfsfunktionen zu erhalten, ?quick_periods Run ?quick_periods .

period(1, "hour")
## [1] "1H 0M 0S"

hours(1)
## [1] "1H 0M 0S"

period(6, "months")
## [1] "6m 0d 0H 0M 0S"

months(6)
## [1] "6m 0d 0H 0M 0S"

years(1)
## [1] "1y 0m 0d 0H 0M 0S"

is.period Funktion is.period kann verwendet werden, um zu prüfen, ob ein Objekt eine Periode ist.

is.period(years(1))
## [1] TRUE

is.period(dyears(1))    
## [1] FALSE

Rundungsdaten

now_dt <- ymd_hms(now(), tz="IST")
now_dt
## [1] "2016-07-22 13:53:09 IST"

round_date() ein Date-Time-Objekt und rundet es auf den nächsten ganzzahligen Wert der angegebenen Zeiteinheit.

round_date(now_dt, "minute")
## [1] "2016-07-22 13:53:00 IST"

round_date(now_dt, "hour")
## [1] "2016-07-22 14:00:00 IST"

round_date(now_dt, "year")
## [1] "2017-01-01 IST"

floor_date() ein Date-Time-Objekt und rundet es auf den nächsten ganzzahligen Wert der angegebenen Zeiteinheit ab.

floor_date(now_dt, "minute")
## [1] "2016-07-22 13:53:00 IST"

floor_date(now_dt, "hour")
## [1] "2016-07-22 13:00:00 IST"

floor_date(now_dt, "year")
## [1] "2016-01-01 IST"

ceiling_date() ein Date-Time-Objekt und rundet es auf den nächsten ganzzahligen Wert der angegebenen Zeiteinheit.

ceiling_date(now_dt, "minute")
## [1] "2016-07-22 13:54:00 IST"

ceiling_date(now_dt, "hour")
## [1] "2016-07-22 14:00:00 IST"

ceiling_date(now_dt, "year")
## [1] "2017-01-01 IST"

Unterschied zwischen Zeitraum und Dauer

Im Gegensatz zu Dauern können Perioden verwendet werden, um die Uhrzeiten genau zu modellieren, ohne zu wissen, wann Ereignisse wie Schaltsekunden, Schalttage und DST-Änderungen auftreten.

start_2012 <- ymd_hms("2012-01-01 12:00:00")
## [1] "2012-01-01 12:00:00 UTC"

# period() considers leap year calculations.
start_2012 + period(1, "years")
## [1] "2013-01-01 12:00:00 UTC"

# Here duration() doesn't consider leap year calculations. 
start_2012 + duration(1)
## [1] "2012-12-31 12:00:00 UTC"

Zeitzonen

with_tz gibt ein Datum und eine Uhrzeit zurück, wie es in einer anderen Zeitzone erscheinen würde.

nyc_time <- now("America/New_York")
nyc_time
## [1] "2016-07-22 05:49:08 EDT"

# corresponding Europe/Moscow time
with_tz(nyc_time, tzone = "Europe/Moscow")
## [1] "2016-07-22 12:49:08 MSK"

force_tz gibt das Datum und die Uhrzeit zurück, das dieselbe Uhrzeit wie x in der neuen Zeitzone hat.

nyc_time <- now("America/New_York")
nyc_time
## [1] "2016-07-22 05:49:08 EDT"

force_tz(nyc_time, tzone = "Europe/Moscow") # only timezone changes
## [1] "2016-07-22 05:49:08 MSK"


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow