How to subtract time in R ?
In this article, we will discuss how to subtract time in R Programming Language.
Method 1: Using difftime() method in R
The difftime() method in R is used to compute the difference in the timestamps given. It is used to return an object of the class difftime itself accompanied by 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 timestamp value subtracted by the 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”))
Parameters:
- 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 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" ) |
Output:
[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
Method 2:
A date string can be first converted to 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 the 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 in 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
Example 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) |
Output:
[1] "Original Date : " [1] "2021-04-01 UTC" [1] "New Date" [1] "2021-03-31 23:59:45 UTC"
Example 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) |
Output:
[1] "Original Date : " [1] "2021-04-01 UTC" [1] "New Date" [1] "2021-03-31 20:34:45 UTC"
Method 3:
Instead, of directly performing arithmetic on the POSIXct dates, we can use the method as.difftime() over this object, to subtract time stamps from the available dates. The as.difftime() method has the following syntax :
as.difftime(int , units = c("secs","hours","mins")
Example:
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) |
Output
[1] "Original Date : " [1] "2021-04-01 UTC" [1] "New Date" [1] "2021-03-31 15:31:45 UTC"
Please Login to comment...