Objetivo

Probar funciones de librería lubridate

Desarrollo

Cargar librerías

library(lubridate)
library(dplyr)

Dato tipo fecha

hoy <- Sys.Date()
hoy
## [1] "2021-10-23"

Funciones con lubridate

ahora <- today()   # Fecha de hoy yyyy-mm-dd
ahora
## [1] "2021-10-23"
hoyhoy <- now()  # Fecha con hora
hoyhoy
## [1] "2021-10-23 11:51:02 CDT"
maniana.en.ocho <- today() + 8   # Agregando dias a la fecha de 
maniana.en.ocho
## [1] "2021-10-31"

Crear fechas con ymd

ymd("1969-11-06")
## [1] "1969-11-06"
mdy("1969-11-06")  # No funciona
## Warning: All formats failed to parse. No formats found.
## [1] NA
ymd(19691106); ymd(20211023)
## [1] "1969-11-06"
## [1] "2021-10-23"
mdy(19691106)  # No funciona
## Warning: All formats failed to parse. No formats found.
## [1] NA
ymd_hms("2017-01-31 20:11:59")
## [1] "2017-01-31 20:11:59 UTC"
mdy_hm("01/31/2017 08:01")
## [1] "2017-01-31 08:01:00 UTC"
ymd(20170131, tz = "America/Mexico_City")
## [1] "2017-01-31 CST"

Personalizando fechas con mdy() y dmy()

mdy("enero 31, 2021")
## [1] "2021-01-31"
mdy("Octubre 23th, 2021")
## [1] "2021-10-23"
mdy("January 31st, 2017")
## [1] "2017-01-31"
mdy("Januar 31st, 2017") # Germany
## Warning: All formats failed to parse. No formats found.
## [1] NA
#> [1] "2017-01-31"
dmy("31-Jan-2017") 
## [1] "2017-01-31"
#> [1] "2017-01-31"
dmy("23-Oct-2021")
## [1] "2021-10-23"
mdy(paste(month.abb, " 20, 2017")) # cualqueiri mes abreviado
##  [1] "2017-01-20" "2017-02-20" "2017-03-20" "2017-04-20" "2017-05-20"
##  [6] "2017-06-20" "2017-07-20" "2017-08-20" "2017-09-20" "2017-10-20"
## [11] "2017-11-20" "2017-12-20"

Crear fechas por partes

mifecha <- make_date(year = 1969, month = 11, day = 6)
mifecha
## [1] "1969-11-06"

Como conocer el tipo de dato fecha

mifecha
## [1] "1969-11-06"
paste(class(mifecha))
## [1] "Date"
print(typeof(mifecha))
## [1] "double"

Extraer partes de una fecha

mifecha
## [1] "1969-11-06"
year(x = today())
## [1] 2021
year(x = mifecha)
## [1] 1969
month(mifecha); class(month(mifecha))
## [1] 11
## [1] "numeric"
day(mifecha)
## [1] 6
quarter(mifecha)
## [1] 4
wday(mifecha)  # dia de la semana
## [1] 5
weekdays(today())   # Pauete base
## [1] "sábado"
weekdays(mifecha)   # Dia en que nací
## [1] "jueves"

Simular un data.frame a partir de elementos de fecha

Construyendo el data.frame datos

set.seed(2021)

agnio <- round(rnorm(n = 100, mean = 1975, sd = 5))
mes <- sample(x = 1:12, size = 100, replace = TRUE)
dia <- sample(x = 1:28, size = 100, replace = TRUE)

datos <- data.frame(agnio,mes,dia)

head(datos)
##   agnio mes dia
## 1  1974   6  12
## 2  1978   5   4
## 3  1977   6  23
## 4  1977   5   6
## 5  1979   8  27
## 6  1965  12   6
summary(datos)
##      agnio           mes             dia       
##  Min.   :1964   Min.   : 1.00   Min.   : 1.00  
##  1st Qu.:1970   1st Qu.: 5.00   1st Qu.: 7.00  
##  Median :1974   Median : 7.50   Median :14.50  
##  Mean   :1974   Mean   : 7.15   Mean   :14.42  
##  3rd Qu.:1977   3rd Qu.: 9.25   3rd Qu.:22.00  
##  Max.   :1986   Max.   :12.00   Max.   :28.00

Construir una variable fecha

datos %>%
    select(agnio, mes, dia) %>%
  filter(agnio == 1969)
##   agnio mes dia
## 1  1969   9  17
## 2  1969   1  23
## 3  1969  11   7

Agregar nueva variable

datos <- datos %>%
  mutate(fecha = make_date(year=agnio, month = mes, day = dia)) %>%
  head(10)

tail(datos)
##    agnio mes dia      fecha
## 5   1979   8  27 1979-08-27
## 6   1965  12   6 1965-12-06
## 7   1976  11  18 1976-11-18
## 8   1980   8  17 1980-08-17
## 9   1975   5  28 1975-05-28
## 10  1984   3   2 1984-03-02