You can clone with
HTTPS or Subversion.
Recently posted on StackOverflow because didn't know how to report bug report / make feature request here.
Problem reproduced here for completeness, I can take down SO "question" if this bug is deemed legitimate here:
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.
dt <- data.table(id=c(1,1,2,2),
event=rep(c("start", "end"), times=2),
dt$time - dt$time # in minutes
dt$time - dt$time # 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 mins
dt[ , difftime(max(time), min(time), units="hours"), by=id] # both hours
Agreed it's a bug. Thanks for the nice report. I tested in latest dev just now and it occurs there too.
Good to have the S.O. question as well i.e. don't take it down. More chance people will find it and see the workarounds etc.
As a first step, the attributes on each group result could be checked for consistency and a warning issued if not. I thought it did that already but clearly not. Tagged High for the this detection and warning aspect which should be relatively straightforward and could be an issue in other cases unrelated to POSIXct. Making it return the right result without speed penalty could be hard, so likely best to have user call difftime(,units=), and that could be a suggestion in the warning message.