How to compare time in R?
R programming Language supports both date and DateTime objects using various different formats and specifiers. The built-in framework as.Date function is responsible for the handling of dates alone, the library chron in R Programming handles both dates and times, without any support for time zones; whereas the POSIXct and POSIXlt classes provides the support for handling datetime objects as well as timezones. Easy conversion of date time objects can be performed to other date related objects.
A date string can be first converted to a POSIXct objects and then basic arithmetic can be performed on it easily. POSIXct objects ease the process of mathematical operations, since they rely on seconds as the major unit of time management. The dates are converted to standard time zone, UTC. A string type date object can be converted to POSIXct object, using the as.POSIXct(date) method in R. Since, the dates are stored on seconds, the subtraction can be performed by first converting the hours and minutes to the units of seconds too.
1 hour = 1 * 60 * 60 seconds
1 min = 1 * 60 seconds
Method 1 : Using logical operators
POSIXct dates can be compared using the logical operators to compare dates. Logical operators are applied in between the different argument dates and a boolean TRUE or FALSE value is returned based on the output.
Example:
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" ) } } |
Output
[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"
Method 2 : Using comparison operators
- Using difftime() method
The difftime() method in R language is used to compute the difference in the timestamps given. It is used to return an object of the class difftime itself accompanied by a units attribute. “difftime” objects support only limited arithmetic operations upon them, that is, they can be added or subtracted, and multiplied or divided by a numeric vector. The result returned by this method is based on the first parameter time stamp value subtracted by second parameter, that is time1-time2. The result is positive in case the time1 is larger than time2, 0 if the two time frames are equal and negative for the remaining case.
Syntax: difftime(time1, time2, tz,units = c(“auto”, “secs”, “mins”, “hours”,”days”, “weeks”))
Parameter :
- time1 and time2 – the datetime objects or numeric vectors
- tz – time zone (optional)
- units – the specification of units to perform arithmetic on
Return type : a difftime object applying the arithmetic on datetime object
Example :
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" ) } } |
Output
[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
- Using ‘-‘ operator
The date objects can be compared using the minus operator to subtract the smaller date from the larger date. The units in which the date is returned is the maximum of the hours, minutes or seconds.
Example:
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) } } |
Output
[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
Contact Us