¿Cómo comparar el tiempo en R?

El lenguaje de programación R admite objetos de fecha y fecha y hora utilizando varios formatos y especificadores diferentes. La función incorporada as.Date del marco de trabajo es responsable del manejo de las fechas únicamente, la biblioteca chron en R Programming maneja tanto las fechas como las horas, sin soporte para las zonas horarias; mientras que las clases POSIXct y POSIXlt brindan soporte para manejar objetos de fecha y hora, así como zonas horarias. Se puede realizar una fácil conversión de objetos de fecha y hora a otros objetos relacionados con la fecha.

Una string de fecha se puede convertir primero en un objeto 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 los segundos como 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, utilizando el método as.POSIXct(fecha) en R. Dado que las fechas se almacenan en segundos, la resta se puede realizar convirtiendo primero las horas y los minutos en unidades de segundos. también.

1 hora = 1 * 60 * 60 segundos

1 minuto = 1 * 60 segundos

Método 1: Usar operadores lógicos

Las fechas POSIXct se pueden comparar utilizando los operadores lógicos para comparar fechas. Los operadores lógicos se aplican entre las diferentes fechas de los argumentos y se devuelve un valor booleano VERDADERO o FALSO según la salida. 

Ejemplo:

R

# declaring a time object
time1 <- as.POSIXct("08:32:07", format = "%H:%M:%S")
print ("Time 1")
print (time1)
 
time2 <- as.POSIXct("08:32:08", format = "%H:%M:%S")
print ("Time 2")
print (time2)
 
if ( time1 == time2){
    print("Equal times")
}else{
     
    if(time1< time2){
        print ("Time1 smaller")
    }else{
        print ("Time2 smaller")
    }
}

Producción

[1] "Time 1"
[1] "2021-05-18 08:32:07 UTC"
[1] "Time 2"
[1] "2021-05-18 08:32:08 UTC"
[1] "Time1 smaller"

Método 2: Usar operadores de comparación

  • Usando el método difftime()

El método difftime() en lenguaje R se usa para calcular la diferencia en las marcas de tiempo dadas. Se utiliza para devolver un objeto de la propia clase difftime acompañado de un atributo de unidades. Los objetos «difftime» solo admiten operaciones aritméticas limitadas sobre ellos, es decir, se pueden sumar o restar, y multiplicar o dividir por un vector numérico. El resultado devuelto por este método se basa en el valor de marca de tiempo del primer parámetro restado por el segundo parámetro, que es time1-time2. El resultado es positivo en caso de que el tiempo1 sea mayor que el tiempo2, 0 si los dos marcos temporales son iguales y negativo para el caso restante.

Sintaxis: difftime(time1, time2, tz,units = c(“auto”, “segs”, “mins”, “hours”,”days”, “weeks”))

Parámetro:

  • time1 y time2: los objetos de fecha y hora o vectores numéricos
  • tz – zona horaria (opcional)
  • unidades: la especificación de unidades para realizar operaciones aritméticas

Tipo de devolución: un objeto difftime que aplica la aritmética en el objeto datetime

Ejemplo :

R

# declaring a time object
time1 <- as.POSIXct("08:35:07", format = "%H:%M:%S")
print ("Time 1")
print (time1)
 
time2 <- as.POSIXct("08:32:08", format = "%H:%M:%S")
print ("Time 2")
print (time2)
 
if ( time1 == time2){
    print("Equal times")
}else{
   
    # checking if time1 is smaller than time2
    if(time1< time2){
        print ("Time2 - Time1")
       
        # calculating time2-time1
        difftime(time2,time1, units = "hours")
    }else{
       
        # calculating time1-time2
        print ("Time1 - Time2")
        difftime(time1,time2, units = "hours")      
    }
}

Producción

[1] "Time 1"
[1] "2021-05-18 08:35:07 UTC"
[1] "Time 2"
[1] "2021-05-18 08:32:08 UTC"
[1] "Time1 - Time2"
Time difference of 0.04972222 hours
  • Usando el operador ‘-‘

Los objetos de fecha se pueden comparar usando el operador menos para restar la fecha más pequeña de la fecha más grande. Las unidades en las que se devuelve la fecha es el máximo de horas, minutos o segundos. 

Ejemplo:

R

# declaring a time object
time1 <- as.POSIXct("09:35:07", format = "%H:%M:%S")
print ("Time 1")
print (time1)
 
time2 <- as.POSIXct("09:35:08", format = "%H:%M:%S")
print ("Time 2")
print (time2)
 
if ( time1 == time2){
    print("Equal times")
}else{
   
    # checking if time1 is smaller than time2
    if(time1< time2){
        print ("Time2 - Time1")
       
        # calculating time2-time1
        print (time2 -time1)
    }else{
       
        # calculating time1-time2
        print ("Time1 - Time2")
        print (time1-time2)  
    }
}

Producción

[1] "Time 1"
[1] "2021-05-18 09:35:07 UTC"
[1] "Time 2"
[1] "2021-05-18 09:35:08 UTC"
[1] "Time2 - Time1"
Time difference of 1 secs

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 *