R Language
lubrifier
Recherche…
Syntaxe
- ymd_hms (..., quiet = FALSE, tz = "UTC", locale = Sys.getlocale ("LC_TIME"))
- maintenant (tzone = "")
- intervalle (début, fin, tzone = attr (début, "tzone"))
- duration (num = NULL, units = "seconds", ...)
- period (num = NULL, units = "second", ...)
Remarques
Pour installer le paquet depuis CRAN:
install.packages("lubridate")
Pour installer la version de développement à partir de 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)
Pour obtenir des vignettes sur le package lubridate:
vignette("lubridate")
Pour obtenir de l'aide sur certaines fonctions foo
:
help(foo) # help about function foo
?foo # same thing
# Example
# help("is.period")
# ?is.period
Pour obtenir des exemples pour une fonction foo
:
example("foo")
# Example
# example("interval")
Analyse des dates et des durées de temps à partir de chaînes avec lubridate
Le package lubridate
fournit des fonctions pratiques pour formater des objets de date et de date / heure à partir de chaînes de caractères. Les fonctions sont des permutations de
Lettre | Élément à analyser | Base R équivalente |
---|---|---|
y | an | %y , %Y |
m (avec y et d) | mois | %m , %b , %h , %B |
ré | journée | %d , %e |
h | heure | %H , %I%p |
m (avec h et s) | minute | %M |
s | secondes | %S |
Par exemple, ymd()
pour analyser une date avec l'année suivie du mois suivi du jour, par exemple "2016-07-22"
ou ymd_hms()
pour analyser un datetime dans l'année, le mois, le jour, les heures, les minutes, secondes, par exemple "2016-07-22 13:04:47"
.
Les fonctions sont capables de reconnaître la plupart des séparateurs (tels que /
, -
et les espaces) sans arguments supplémentaires. Ils travaillent également avec des séparateurs incohérents.
Rendez-vous
Les fonctions de date renvoient un objet de classe 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"
Datetimes
Fonctions utilitaires
Datetimes peuvent être analysés en utilisant ymd_hms
variantes , y compris ymd_hm
et ymd_h
. Toutes les fonctions datetime peuvent accepter un argument de tz
timezone semblable à celui de as.POSIXct
ou strptime
, mais par défaut à "UTC"
au lieu du fuseau horaire local.
Les fonctions datetime renvoient un objet de classe 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"
Fonctions d'analyseur
lubridate
inclut également trois fonctions permettant d'analyser des datetimes avec une chaîne de formatage telle as.POSIXct
ou strptime
:
Fonction | Classe de sortie | Chaînes de formatage acceptées |
---|---|---|
parse_date_time | POSIXct | Flexible. strptime style strptime avec % ou lubridate style de nom de la fonction datetime, par exemple "ymd hms" . Acceptera un vecteur de commandes pour des données hétérogènes et devinez lequel est approprié. |
parse_date_time2 | POSIXct par défaut; si lt = TRUE , POSIXlt | Strict. Accepte uniquement les jetons strptime (avec ou sans % ) d'un ensemble limité. |
fast_strptime | POSIXlt par défaut; si lt = FALSE , POSIXct | Strict. Accepte uniquement les jetons strptime à délimitation % avec des délimiteurs ( - , / , : , etc.) d'un ensemble limité. |
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
et fast_strptime
utilisent un analyseur C rapide pour plus d'efficacité.
Voir ?parse_date_time
pour le formatage des jetons.
Date et heure d'analyse en lubrifiant
Lubridate fournit ymd()
série de fonctions ymd()
pour analyser les chaînes de caractères en dates. Les lettres y, m et d correspondent aux éléments year, month et day d'une date-heure.
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"
Manipulation de la date et de l'heure en lubrifiant
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"
Instants
Un instant est un moment précis dans le temps. Tout objet date-heure faisant référence à un moment est reconnu comme un instant. Pour tester si un objet est un instant, utilisez 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
Intervalles, durées et périodes
Les intervalles sont les moyens les plus simples d’enregistrer les plages de temps en lubrifiant. Un intervalle est une durée qui se produit entre deux instants spécifiques.
# 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
Les durées mesurent le temps exact qui se produit entre deux instants.
duration(60, "seconds")
## [1] "60s"
duration(2, "minutes")
## [1] "120s (~2 minutes)"
Remarque: les unités plus grandes que les semaines ne sont pas utilisées en raison de leur variabilité.
Les durées peuvent être créées en utilisant dseconds
, dminutes
et d'autres fonctions d'assistance de durée.
Exécutez ?quick_durations
pour la liste complète.
dseconds(60)
## [1] "60s"
dhours(2)
## [1] "7200s (~2 hours)"
dyears(1)
## [1] "31536000s (~365 days)"
Les durées peuvent être soustraites et ajoutées aux instants pour obtenir de nouveaux instants.
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"
Les durées peuvent être créées à partir d'intervalles.
as.duration(span)
[1] "43199s (~12 hours)"
Les périodes mesurent le changement d'horloge qui se produit entre deux instants.
Les périodes peuvent être créées en utilisant la fonction de period
ainsi que d'autres fonctions d'aide telles que les seconds
, les hours
, etc. Pour obtenir une liste complète des fonctions d'assistance de période, ?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
fonction is.period
peut être utilisée pour vérifier si un objet est une période.
is.period(years(1))
## [1] TRUE
is.period(dyears(1))
## [1] FALSE
Dates d'arrondi
now_dt <- ymd_hms(now(), tz="IST")
now_dt
## [1] "2016-07-22 13:53:09 IST"
round_date()
prend un objet date-heure et l'arrondit à la valeur entière la plus proche de l'unité de temps spécifiée.
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()
prend un objet date-heure et l'arrondit à la valeur entière la plus proche de l'unité de temps spécifiée.
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()
prend un objet date-heure et l'arrondit à la valeur entière la plus proche de l'unité de temps spécifiée.
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"
Différence entre période et durée
Contrairement aux durées, les périodes peuvent être utilisées pour modéliser avec précision les temps d'horloge sans savoir quand des événements tels que les secondes intercalaires, les jours bissextiles et les changements d'heure d'été se produisent.
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"
Fuseaux horaires
with_tz
renvoie une date-heure telle qu'elle apparaîtrait dans un fuseau horaire différent.
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
renvoie la date et l'heure qui ont la même heure que x dans le nouveau fuseau horaire.
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"