为什么在 R 中用分组数据减去日期时间时,结果以分钟而不是秒为单位?

Why when subtracting datetime in R with grouped data, the results are in minutes rather than seconds?

我曾想过减去两个 POSIXct 变量时结果会是秒。但是,我发现当我的数据被分组时,它会在几分钟而不是几秒钟内给出结果。为什么会这样?

它选择分钟而不是的原因是默认是使用“合适”的集合;来自 ?difftime(用于 time1 - time2):

     If 'units = "auto"', a suitable set of units is chosen, the
     largest possible (excluding '"weeks"') in which all the absolute
     differences are greater than one.

如果您已经有一个时差矢量 vec,那么您可以通过几种方式强制使用单位。

vec <- Sys.time() - (Sys.time() - 8888)
vec
# Time difference of 2.468889 hours
  1. 如果你想保留 difftime 属性(以及如何 prints/formats),你可以

    units(vec)
    # [1] "hours"
    units(vec) <- "secs"
    vec
    # Time difference of 8888 secs
    

    内联(功能性,不会改变vec):

    `units<-`(vec, "secs")
    # Time difference of 8888 secs
    vec
    # Time difference of 2.468889 hours
    
  2. 如果不需要保留difftime属性,那么直接

    as.numeric(vec, units = "secs")
    # [1] 8888
    

无论处于 mutate 或分组 mutate 或其他任何位置,这都应该有效。