En este artículo, discutiremos cómo restar tiempo en el lenguaje de programación R.
Método 1: Usar el método difftime() en R
El método difftime() en 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 del atributo units. 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ámetros:
- 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 retorno: un objeto difftime que aplica la aritmética en el objeto datetime
Ejemplo:
R
# declaring first datetime object time1 <- "2019-08-25 17:18:24" # declaring second datetime object time2 <- "2019-08-30 23:09:24" # declaring third datetimeobject time3 <- "2019-08-22 23:09:24" # calculating differences using # difftime between time1 and time2 print("TIME1 - TIME2 ") # difference in hours print ("Difference in hours : ") difftime(time1,time2, units = "hours") # difference in minutes print ("Difference in minutes : ") difftime(time1,time2,units = "mins") # difference in seconds print ("Difference in seconds : ") difftime(time1, time2 ,units="secs") print("TIME1 - TIME3 ") # calculating differences using difftime # between time1 and time3 # difference in hours print ("Difference in hours : ") difftime(time1, time3, units = "hours") # difference in minutes print ("Difference in minutes : ") difftime(time1, time3, units = "mins") # difference in seconds print ("Difference in seconds : ") difftime(time1, time3, units="secs")
Producción:
[1] "TIME1 - TIME2 " [1] "Difference in hours : " Time difference of -125.85 hours [1] "Difference in minutes : " Time difference of -7551 mins [1] "Difference in seconds : " Time difference of -453060 secs [1] "TIME1 - TIME3 " [1] "Difference in hours : " Time difference of 66.15 hours [1] "Difference in minutes : " Time difference of 3969 mins [1] "Difference in seconds : " Time difference of 238140 secs
Método 2:
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, 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 a unidades de segundos. también.
1 hour = 1 * 60 * 60 seconds 1 min = 1 * 60 seconds
Ejemplo 1:
R
# declaring string type date str_date <- "2021-04-01" # converting to posixct date pos_date <- as.POSIXct(str_date) # printing original date print ("Original Date : ") print (pos_date) # subtracting 15 seconds date <- pos_date - 15 print ("New Date") print (date)
Producción:
[1] "Original Date : " [1] "2021-04-01 UTC" [1] "New Date" [1] "2021-03-31 23:59:45 UTC"
Ejemplo 2:
R
# declaring string type date str_date <- "2021-04-01" # converting to posixct date pos_date <- as.POSIXct(str_date) # printing original date print ("Original Date : ") print (pos_date) # subtracting 15 seconds secs = 15 # 25 minutes mins = 25 * 60 # 3 hr hrs = 3 * 60 * 60 date <- pos_date - (secs + mins + hrs) print ("New Date") print (date)
Producción:
[1] "Original Date : " [1] "2021-04-01 UTC" [1] "New Date" [1] "2021-03-31 20:34:45 UTC"
Método 3:
En lugar de realizar operaciones aritméticas directamente en las fechas POSIXct, podemos usar el método as.difftime() sobre este objeto, para restar las marcas de tiempo de las fechas disponibles. El método as.difftime() tiene la siguiente sintaxis:
as.difftime(int , units = c("secs","hours","mins")
Ejemplo:
R
# declaring string type date str_date <- "2021-04-01" # converting to posixct date pos_date <- as.POSIXct(str_date) # printing original date print ("Original Date : ") print (pos_date) # subtracting 15 seconds secs = 15 # 25 minutes mins = 28 # 3 hr hrs = 8 date <- pos_date - as.difftime(secs,units="secs") - as.difftime(mins,units="mins") - as.difftime(hrs,units="hours") print ("New Date") print (date)
Producción
[1] "Original Date : " [1] "2021-04-01 UTC" [1] "New Date" [1] "2021-03-31 15:31:45 UTC"