Introducción

Luego de una ardua investigacion mostraremos a lo largo de este trabajo le presentaremos las principales funciones de Lubridate, además de la aplicación de algunas funciones de otros paquetes que hemos visto en clase con la finalidad de dar conocimiento de un nuevo paquete de los cientos que existen en cran

¿De que trata Lubridate?

Tiene funciones para trabajar con fechas-horas y períodos de tiempo: análisis rápido y fácil de usar de datos de fecha-hora, extracción y actualización de componentes de una fecha-hora (años, meses, días, horas, minutos y segundos), manipulación algebraica en objetos de fecha-hora y de intervalo de tiempo. El paquete ‘lubridate’ tiene una sintaxis consistente y memorable que hace que trabajar con fechas sea fácil y divertido.

Libreria de Paquetes

Los paquetes que utlizaremos en este trabajo son los siguientes:

library(lubridate)
library(readr)
library(tidyverse)
library(dplyr)
library(ggplot2)

Data frame

La base de datos que utilizaremos para ejecutar las diferentes funciones de Lubridate consta de un registro de relampagos en Argentina

relampagos <- read_csv("https://raw.githubusercontent.com/paocorrales/r4ds-notas/master/examen/eventos_severos_RELAMPAGO.csv")
View(relampagos)
fecha lat lon evento
10/29/2018 22:05:00 -33.11956 -64.32797 Ráfagas y/o vientos intensos
10/30/2018 13:00:00 -32.95214 -60.76837 Rayos y/o truenos
10/30/2018 10:00:00 -32.85000 -61.25000 Granizo
10/29/2018 19:00:00 -33.27861 -65.61417 Granizo

PRINCIPALES FUNCIONES DE LUBRIDATE

Cabe destacar que el paquete Lubridate tiene demasidas funciones, pero aqui le explicaremos y mostraremos las principales, como herremienta que en algún momento serán de gran ayuda a la hora de manejo de datos.

Cambio de formato data-time

Como podemos apreciar en el DF el vector donde están las fechas de los registros, este no esta con el formato que le corresponde que para las fechas seria DATA que es solo para fechas o POSIX que es para fechas y horas, entonces para esto utilizaremos la funcion mdy_hms.

Lo que significa que el vector fechas sera ordenado por m(meses), d(dias), y(años), h(horas), m(minutos) y s(segundos), estos pueden ir variando su orden, dependiendo de como le acomoda a uno como por ejemplo ymd_hms,mdy_hms, entre otros.

Lo que hicimos fue utilizar la funcion mutate de dplyr para agregar una nueva columna a nuestro DF, donde creamos el nuevo vector que refleja el formato correspondiente a las fechas al cual denominamos fecha_convertida

relampagos <- relampagos %>% 
  mutate(fecha_convertida = mdy_hms(fecha))

Aqui extraemos o llamamos el primer elemento de nuestro DF para corroborar y ver como quedaron las fechas luego de aplicar la funcion de lubridate que fue dmy_hms.

relampagos %>% 
  pull(fecha_convertida) %>%
  .[1]                       # Extraemos el primer elemento 
## [1] "2018-10-29 22:05:00 UTC"

Y asi es como quedo nuestra Data:

fecha lat lon evento fecha_convertida
10/29/2018 22:05:00 -33.11956 -64.32797 Ráfagas y/o vientos intensos 2018-10-29 22:05:00
10/30/2018 13:00:00 -32.95214 -60.76837 Rayos y/o truenos 2018-10-30 13:00:00
10/30/2018 10:00:00 -32.85000 -61.25000 Granizo 2018-10-30 10:00:00
10/29/2018 19:00:00 -33.27861 -65.61417 Granizo 2018-10-29 19:00:00
10/30/2018 12:50:00 -31.39905 -64.33477 Granizo 2018-10-30 12:50:00

Extracción y analisis de los componentes fecha y hora

*FECHAS

Aqui mostraremos funciones que tienen que ver precisamente con los elementos de las fechas, es decir, dias, meses y años

today() #Esta función nos muestra la fecha actual en la que se ejecute la función 
## [1] "2022-12-15"
year(relampagos$fecha_convertida) #Aqui nos muestra los años que aparecen dentro del DF
month(relampagos$fecha_convertida) #Nos muestra los meses que estan en el DF
day(relampagos$fecha_convertida) #Aparacen los dias que estan en el DF

La funcion wday nos ayuda a identificar que dia de la semana corresponde cada fecha de nuestro vector fecha, es decir que dia de la semana fue caya relampago que hubo.

wday(relampagos$fecha_convertida,label = TRUE) 
#Está funcion nos ayuda a identicar que dia de la semana de modo abreviado ocurrieron los relampagos 
wday(relampagos$fecha_convertida,label = TRUE,abbr=FALSE)
#Está funcion cumple el mismo proposito que en la funcion anterior solo que al poner abbr=FALSE no menciona los dias de la semana sin abreviacion
## [1] lun\\. mar\\. mar\\. lun\\. mar\\. sáb\\.
## Levels: dom\\. < lun\\. < mar\\. < mié\\. < jue\\. < vie\\. < sáb\\.
## [1] lunes  martes martes lunes  martes sábado
## 7 Levels: domingo < lunes < martes < miércoles < jueves < ... < sábado

Para saber que años fueron años bisiesto o no esta la funcion leap_year

leap_year(relampagos$fecha_convertida) #Esta funcion nos muestra si los años de la base de datos eran año bisiesto 
## [1] FALSE FALSE FALSE FALSE FALSE FALSE

En este caso segun nuestra base de datos es FALSE lo cual significa que los años donde fueron los eventos registrados no eran años biestos

*HORAS

En esta parte se presentan aquellas funciones que tienen que ver con los componentes de la hora, lo que significa que tiene relacion con las horas, minutos y segundos

now() #Esta función nos muestra la fecha y hora actual en la que se ejecute la función
## [1] "2022-12-15 14:47:33 -03"
hour(relampagos$fecha_convertida) #Nos muestra solo la hora en la que ocurrieron los relampagos
minute(relampagos$fecha_convertida) #Nos refleja solo los minutos en el que ocurrio el evento
second(relampagos$fecha_convertida) #Nos muestra solo los segundos 

Aqui gracias a las funciones am y pm podemos ver que horas de nuestrO DF son en horario de mañana o de tarde

am(relampagos$fecha_convertida) #Nos dice que datos sus horas son am, es decir en la mañana, es decir = TRUE
## [1] FALSE FALSE  TRUE FALSE FALSE  TRUE
pm(relampagos$fecha_convertida) #Nos dice que datos sus horas son pm, es decir en la tarde, es decir = TRUE
## [1]  TRUE  TRUE FALSE  TRUE  TRUE FALSE

En este caso la funcion dst nos ayuda de saber si los años de nuestro DF estan con horario de verano o no

dst(relampagos$fecha_convertida) #Esta funcion nos ayuda a saber si las fechas y hora fueron en horario de verano
head(dst(relampagos$fecha_convertida))

En este caso en nuestro DF salen todas FALSE lo que significa que ninguno de los datos tomados fueron tomados en horario de verano, pero si aplicamos nuestra zona horaria esto cambiaria ya que nosotros actualmente estamos con horario de veranos que lo veremos más adelante

Zona horaria UTC

La zona horaria nos ayuda para evitar los horario de verano de las diversas localidades

*Zona horaria local

OlsonNames() #Lista de las más de 600 zona horarias disponibles 
## [1] "Africa/Abidjan"     "Africa/Accra"       "Africa/Addis_Ababa"
## [4] "Africa/Algiers"     "Africa/Asmara"      "Africa/Asmera"
Sys.timezone() #Muestra la zona horaria de mi computador
## [1] "America/Santiago"

Aplicando en nuestro DF

Entonces nuestra base de datos tiene por efecto la zona horaria de Argentina, lo cual ahora nosotros actulizaremos las fechas a nuestra zona horaria.

Agregamos una nueva columna con la ayuda de la funcion mutate, donde utilizamos la funcion with_tz de Lubridate que consigue la misma date-time en una nueva zona horaria,es decir, los datos fueron recolectados en Argentina, con la zona horaria de alla, entonces con esta función convertimos las horas a nuestra zona horaria que en este caso es “America/Santiago”

relampagos<- relampagos %>%
  mutate(fecha_convertida_ZH = with_tz(relampagos$fecha_convertida,tz="America/Santiago"))

Llamamos el primer elemento para observar como quedo al alplicar la funcion.

relampagos %>%
  pull(fecha_convertida_ZH) %>%
  .[1]
## [1] "2018-10-29 19:05:00 -03"

Asi fue como quedo nuestra data:

fecha lat lon evento fecha_convertida fecha_convertida_ZH
10/29/2018 22:05:00 -33.11956 -64.32797 Ráfagas y/o vientos intensos 2018-10-29 22:05:00 2018-10-29 19:05:00
10/30/2018 13:00:00 -32.95214 -60.76837 Rayos y/o truenos 2018-10-30 13:00:00 2018-10-30 10:00:00
10/30/2018 10:00:00 -32.85000 -61.25000 Granizo 2018-10-30 10:00:00 2018-10-30 07:00:00
10/29/2018 19:00:00 -33.27861 -65.61417 Granizo 2018-10-29 19:00:00 2018-10-29 16:00:00
10/30/2018 12:50:00 -31.39905 -64.33477 Granizo 2018-10-30 12:50:00 2018-10-30 09:50:00
11/3/2018 10:35:00 -31.75987 -65.00167 Rayos y/o truenos 2018-11-03 10:35:00 2018-11-03 07:35:00

*Horario de verano

La función dst() nos ayuda a identificar si las horas de nuestro DF estan en horario de verano o no

dst(relampagos$fecha_convertida_ZH)
#Aqui nos arroja que todas son TRUE segun nuestra zona horaria, porque nosotros 
#estamos con horario de verano 
## [1] TRUE TRUE TRUE TRUE TRUE TRUE

Aqui nos arroja que todas son TRUE segun nuestra zona horaria, porque nosotros estamos con horario de verano.

Grafico

Graficaremos para concluir como nos puede ayudar el paquete Lubridate con la aplicacion de una o dos de sus funciones.

Para graficar utiliozaremos el paquete Ggplot2 utilizando la funcion wday de Lubridate

library(ggplot2)

relampagos %>%
  mutate(dia_semana = wday(relampagos$fecha_convertida,label = TRUE, abb=FALSE)) %>%
  ggplot(aes(x = dia_semana)) +
  geom_bar()

Aqui graficamos con la ayuda del paquetes ggplot2 los dias de la semana en los que ocurrieron los relampagos y como se puede ver la mayoria de los relampagos registrados, fueron un dia domingo y el dia que menos hubieron fue en el dia sabado