When durations are computed in data.table (v1.9.2), the wrong units can be printed with POSIXct arithmetic. It seems the first units are chosen.
require("data.table")
dt <- data.table(id=c(1,1,2,2),
event=rep(c("start", "end"), times=2),
time=c(as.POSIXct(c("2014-01-31 06:05:30",
"2014-01-31 06:45:30",
"2014-01-31 08:10:00",
"2014-01-31 09:30:00"))))
dt$time[2] - dt$time[1] # in minutes
dt$time[4] - dt$time[3] # in hours
dt[ , max(time) - min(time), by=id] # wrong units printed for id 2
I realize that one of these is the correct way to do it to get expected behavior, but wanted to report this behavior. Not sure if it is really a data.table problem or POSIXct problem.
dt[ , difftime(max(time), min(time), units="mins"), by=id] # both in mins
dt[ , difftime(max(time), min(time), units="hours"), by=id] # both in hours