Calculating Time Difference between two columns
Firstly, this has nothing to do with lubridate.
Secondly, RStudio has let you down by screwing with the printing of the variable in the display window. If you enter CR_Date$hours
in the command line window you will see it prints
#Time differences in secs
#[1] 0 36900
and head(CR_Date)
gives:
# pos1 pos2 hours
#1 2014-07-01 2014-07-01 00:00:00 0 secs
#2 2014-07-01 2014-07-01 10:15:00 36900 secs
Either of which would have tipped you off as to what it is displaying.
As @Victorp suggests, difftime
is the way to resolve this:
CR_Date$hours <- with(CR_Date, difftime(pos2,pos1,units="hours") )
CR_Date
# pos1 pos2 hours
#1 2014-07-01 2014-07-01 00:00:00 0.00 hours
#2 2014-07-01 2014-07-01 10:15:00 10.25 hours
You may also use the "as.double
method" and its units
argument (see ?diffime
):
as.double
method [as.double(x, units = "auto", ...)
] returns the numeric value expressed in the specified units
...where x
is
an object inheriting from class
"difftime"
Applied to your example, where pos2 - pos1
will result in a difftime
object:
CR_Date$hours <- as.double(CR_Date$pos2 - CR_Date$pos1, units = "hours")
CR_Date
# pos1 pos2 hours
#1 2014-07-01 2014-07-01 00:00:00 0.00
#2 2014-07-01 2014-07-01 10:15:00 10.25
Or other units
:
as.double(CR_Date$pos2 - CR_Date$pos1, units = "mins")
#[1] 0 615
as.double(CR_Date$pos2 - CR_Date$pos1, units = "days")
#[1] 0.0000000 0.4270833