tutorial sheet fecha cheat and r lubridate

sheet - posixct to date r



R secuencia de fechas con lubricante (2)

Esta es una forma de POSIXct dentro del universo POSIXct de lubridate y no cambiar los formatos de fecha a POSIXt de R base. Evito cambiar el formato de fecha en mis scripts porque me parece que es un lugar común donde se presentan errores (por ejemplo, cambios de zona horaria o marcas de tiempo perdidas). Sigue este consejo para usar %m+% : R: agregar 1 mes a una fecha

# example date is a leap day for a "worst case scenario" library("lubridate") posixct.in <- parse_date_time(x = "2016-02-29", orders = "ymd") # [1] "2016-02-29 UTC" posixct.seq <- posixct.in %m+% years(x = seq.int(from = 0, to = 3, by = 1)) # [1] "2016-02-29 UTC" "2017-02-28 UTC" "2018-02-28 UTC" "2019-02-28 UTC" posixct.seq <- posixct.in %m+% months(x = seq.int(from = 0, to = 3, by = 1)) # [1] "2016-02-29 UTC" "2016-03-29 UTC" "2016-04-29 UTC" "2016-05-29 UTC" posixct.seq <- posixct.in %m+% days(x = seq.int(from = 0, to = 3, by = 1)) # [1] "2016-02-29 UTC" "2016-03-01 UTC" "2016-03-02 UTC" "2016-03-03 UTC" posixct.seq <- posixct.in %m+% weeks(x = seq.int(from = 0, to = 3, by = 1)) # [1] "2016-02-29 UTC" "2016-03-07 UTC" "2016-03-14 UTC" "2016-03-21 UTC"

Un + regular también funciona a veces, pero %m+% evita errores como este:

posixct.seq <- posixct.in + years(x = seq.int(from = 0, to = 3, by = 1)) # [1] "2016-02-29 UTC" NA NA NA

Al principio estaba confundido porque pensaba que %m+ era solo una forma de agregar meses, y no lubridate órdenes de lubridate similares como %y+% etc. Pero, resulta que la "m" no significa "mes adicional". Mi mejor conjetura es "magia" =)

Hola, estoy tratando de obtener una secuencia de fechas con Lubridate

Esto no funciona

seq(ymd(''2012-04-07''),ymd(''2013-03-22''),by=week(1))

el comando base

seq(as.Date(''2012-04-7''),as.Date(''2013-03-22''),''weeks'')

Sí, pero me gustaría saber si existe una forma elegante de hacerlo con lubricante.

EDITAR

Por favor ignore: me resolví, así que solo me quedo con la posteridad. Feliz de tener esto eliminado si es necesario.

seq(ymd(''2012-04-07''),ymd(''2013-03-22''),by=''weeks'')

Hace el truco


ymd es un contenedor para analizar cadenas de fecha y devuelve un objeto POSIXct .

Simplemente necesita usar la terminología estándar descrita en ?seq.POSIXt (no lubridate ) para definir semanas

seq(ymd(''2012-04-07''),ymd(''2013-03-22''), by = ''1 week'') seq(ymd(''2012-04-07''),ymd(''2013-03-22''), by = ''weeks'')

trabajará

como lo hará

seq(ymd(''2012-04-07''),ymd(''2013-03-22''), by = ''2 week'')

Podría forzar el objeto de la clase Period lubridate a un tiempo difftime , pero eso parece bastante innecesario

seq(ymd(''2012-04-07''),ymd(''2013-03-22''), by = as.difftime(weeks(1)))