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