【问题标题】:Round off periods to nearest minutes using lubridate使用 lubridate 将周期四舍五入到最接近的分钟
【发布时间】:2024-04-24 13:30:01
【问题描述】:

我想知道我们是否可以使用lubridateperiod 舍入到最接近的分钟数。例如 - time_diff 的值是“2H 13M 9S”。如何将time_diff 舍入到最接近的分钟以获得“2H 13M”(删除秒数)

library(lubridate)

time_1 <- ymd_hms("2021-01-01 12:12:36")
time_2 <- ymd_hms("2021-01-01 14:25:45")

time_diff <- seconds_to_period(difftime(time_2, time_1, units = 'sec'))

【问题讨论】:

标签: r datetime rounding lubridate


【解决方案1】:

转为整数,去掉秒数,再转为句点:

x <- as.integer(difftime(time_2, time_1, units = "sec"))
seconds_to_period(x - (x %% 60))
# [1] "2H 13M 0S"

【讨论】:

  • 谢谢,是否可以删除第二个组件,即“2H 13M”
【解决方案2】:

我们可以转换成POSIXct,然后使用round_date

library(lubridate)
time_diff1 <- sprintf('%02d:%02d:%02d', time_diff@hour,
     time_diff@minute, second(time_diff))
 format(round_date(as.POSIXct(time_diff1, format = '%H:%M:%S'),
       unit = "minute"), '%H:%M')
[1] "02:13"

【讨论】:

  • 谢谢,能不能得到这种格式——“2H 13M”,但不是字符,我想进一步加减它
最近更新 更多