为什么在 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
如果你想保留 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
如果不需要保留difftime
属性,那么直接
as.numeric(vec, units = "secs")
# [1] 8888
无论处于 mutate
或分组 mutate
或其他任何位置,这都应该有效。
我曾想过减去两个 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
如果你想保留
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
如果不需要保留
difftime
属性,那么直接as.numeric(vec, units = "secs") # [1] 8888
无论处于 mutate
或分组 mutate
或其他任何位置,这都应该有效。