在R中将时间四舍五入到最接近的小时[重复]

Posted

技术标签:

【中文标题】在R中将时间四舍五入到最接近的小时[重复]【英文标题】:rounding times to the nearest hour in R [duplicate] 【发布时间】:2013-05-02 21:27:22 【问题描述】:

我有格式的数据

time <-  c("16:53", "10:57", "11:58")

我想创建一个新列,其中每个时间都四舍五入到最接近的小时。我似乎无法让 POSIX 命令为我工作。

as.character(format(data2$time, "%H:%M"))

format.default(结构(as.character(x),names = names(x),dim = dim(x),)错误: 'trim' 参数无效

更不用说使用 round 命令了。谁能给点建议?

【问题讨论】:

format 用于向另一个方向发展(从日期时间到特定表示)。我不确定是否有部分日期时间的课程,例如,仅由小时和分钟组成。 ***.com/questions/16041093/… 类似:as.POSIXlt(strptime(tt, format="%H:%M") + 30*60)$hour?? 这是怎么复制的? 【参考方案1】:
## Example times
x <- c("16:53", "10:57", "11:58")

## POSIX*t objects need both date and time specified
## Here, the particular date doesn't matter -- just that there is one.
tt <- strptime(paste("2001-01-01", x), format="%Y-%m-%d %H:%M")

## Use round.Date to round, then format to format
format(round(tt, units="hours"), format="%H:%M")
# [1] "17:00" "11:00" "12:00"

【讨论】:

你不需要添加日期,如果你添加当前日期会自动添加strptime(x, "%H:%M") @eddi -- 很酷,但是在夏令时转换的日子里,任何可能让你在特定时间陷入麻烦的机会? (我这一天并不重要,但正是出于这个原因,我选择了一个我认为没有任何地方有 DLT 转变的地方......) 不明白为什么会这样 - 我只是检查了一下,据我所知它工作正常。 @eddi 如果您在美国,请尝试将您的计算机系统日期设置为 2013 年 3 月 10 日(我们今年 DST 的开始),然后运行 ​​round(strptime("1:31", "%H:%M"), "hours")。 R 返回[1] "2013-03-10 03:00:00 PDT"——正是我想要避免的。 谢谢乔希!我明白为什么在测试之前我没有看到差异,我使用 %M 而不是 %m 错误地格式化了月份。没错,添加日期更安全。

以上是关于在R中将时间四舍五入到最接近的小时[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将分钟向下舍入到最接近的一刻钟

在 PySpark 中,如何将时间戳值四舍五入到最接近的分钟?

如何四舍五入到最接近的十分位?

Pandas - 将时间戳四舍五入到最接近的秒数

将时间四舍五入到最接近的秒数 - Python

如何四舍五入到最接近的偶数?