¿Cómo sumar o restar un intervalo de tiempo a una fecha y hora en R?

Los objetos de tiempo en R se pueden declarar utilizando la clase POSIXct, que ofrece una manipulación y almacenamiento rápidos de dichos objetos. Los paquetes externos en R también ayudan a trabajar con la hora y las fechas y permiten realizar operaciones aritméticas directas y de comparación con ellos. En este artículo, vamos a ver cómo sumar y restar un intervalo de tiempo a un DateTime en R Programming.

Método 1: usar el objeto POSIXct

Una string de fecha se puede convertir primero en objetos POSIXct y luego se puede realizar la aritmética básica fácilmente. Los objetos POSIXct facilitan el proceso de las operaciones matemáticas, ya que se basan en segundos como la unidad principal de gestión del tiempo. Las fechas se convierten a la zona horaria estándar, UTC. Un objeto de fecha de tipo string se puede convertir en un objeto POSIXct, usándolo como método .POSIXct (fecha) en R. Dado que las fechas se almacenan en términos de segundos, la resta, así como la suma, se pueden realizar convirtiendo primero el horas y minutos a las unidades de segundos también. Los operadores matemáticos se pueden usar directamente para agregar varios componentes de tiempo al objeto de fecha, que pertenece a la clase POSIXct. 

1 hour = 1 * 60 * 60 seconds
1 min = 1 * 60 seconds

Sintaxis: as.POSIXct (fecha, formato)

Argumentos: 

fecha: el objeto de fecha de string

formato: el especificador de formato de la fecha

Código:

R

# declaring a datetime object
time1 <- as.POSIXct("2021-05-08 08:32:07",
                    format = "%Y-%m-%d %H:%M:%S")
  
print ("Original DateTime")
print (time1)
  
# adding 20 mins to datetime
mins <- 20 * 60
print  ("Adding 20 mins to DateTime")
print (time1 + mins)
  
# converting 3 hours to seconds
hrs <- 3 * 60 * 60
print  ("Subtracting 3 hours from DateTime")
  
# subtracting 3 hours from the 
# date time object
print (time1 - hrs)

Producción:

[1] "Original DateTime"
[1] "2021-05-08 08:32:07 UTC"
[1] "Adding 20 mins to DateTime"
[1] "2021-05-08 08:52:07 UTC"
[1] "Subtracting 3 hours from DateTime"
[1] "2021-05-08 05:32:07 UTC"

Método 2: Uso del paquete de lubricación

El paquete Lubridate en R se usa para trabajar con objetos de fecha y hora. Hace que sea más fácil analizar y manipular los objetos y debe instalarse y cargarse en el espacio de trabajo mediante el siguiente comando:

install.packages("lubridate")

La función Sys.time() en R se usa para obtener el objeto de fecha y hora actual de acuerdo con la zona IST. El método hours() en R se usa para tomar una entrada de un número entero que denota el número de horas. Los objetos del paquete «lubridar» permiten la aritmética directa sobre sus diversos componentes, por lo tanto, la cantidad de horas se puede restar directamente del objeto de tiempo de lubricación. Un resultado es también un objeto que pertenece a esta clase.

Código:

R

# getting required libraries
library(lubridate)
  
# getting current time
time <- Sys.time()
print("Current time")
print (time)
  
# subtracting hours
hrs <- hours(5)
  
print ("Subtracting 5 hours")
mod_time <- time - hrs
print (mod_time)
secs <- seconds(17)
  
print ("Adding 17 seconds")
mod_time <- time + secs
print (mod_time)

Producción

[1] "Current time" 
[1] "2021-05-22 03:27:02 IST" 
[1] "Subtracting 5 hours" 
[1] "2021-05-21 22:27:02 IST" 
[1] "Adding 17 seconds" 
[1] "2021-05-22 03:27:19 IST"

Método 3: Usar el método strptime()

El método strptime en R se usa para convertir directamente vectores de caracteres (de una variedad de formatos) al formato POSIXlt. strptime es más rápido que el enfoque anterior, porque strptime solo maneja la entrada de caracteres.

Sintaxis: strptime(fecha, formato, tz = “”)

Argumentos:

fecha: la fecha en formato de caracteres

formato: el especificador de formato de la fecha de entrada

tz – zona horaria (opcional)

strptime() funciona de manera similar a los objetos POSIXct, donde todos los cálculos se realizan en términos de segundos. 

Código:

R

# declaring a time object
time1 <- strptime("2021-07-07 00:32:07",
                  format = "%Y-%m-%d %H:%M:%S")
print ("Time")
print (time1)
  
# converting 5 hours to seconds
hrs <- 5 * 60 * 60
print  ("Subtracting 5 hours")
print (time1 - hrs)
  
# adding 48 seconds and 24 mins 
mins <- 24 * 60
secs <- 48 * 60 * 60
print  ("Modified Time")
print ((time1 + mins) - secs)

Producción:

[1] "Time"
[1] "2021-07-07 00:32:07 UTC"
[1] "Subtracting 5 hours"
[1] "2021-07-06 19:32:07 UTC"
[1] "Modified Time"
[1] "2021-07-05 00:56:07 UTC"

Explicación: La resta de 5 horas, lleva a la devolución de la fecha anterior. En el segundo escenario, se computan los respectivos números de minutos y segundos.

Publicación traducida automáticamente

Artículo escrito por yippeee25 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *