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
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"


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow