如何在R中删除分钟?

use*_*746 2 r

我在R中有一个DateTime对象

tempDateTime<-as.POSIXct("2017-07-13 01:40:00 MDT")

class(tempDateTime)
Run Code Online (Sandbox Code Playgroud)

[1]"POSIXct""POSIXt"

我想从DateTime对象中删除分钟.即拥有"2017-07-13 01:00:00 MDT"

有一个简单的方法吗?

Sym*_*xAU 8

在Base R

trunc(tempDateTime, units = "hours")
# "2017-07-13 01:00:00 AEST"
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为round基R中的函数有一个处理POSIX对象的方法.

?round.POSIXt

舍入或截断日期时间对象.


正如@Thelatemail指出的那样,这将返回一个POSIXlt对象,因此您可能希望as.POSIXct()再次包装结果.


另一个注意事项POSIXct是存储自"1970-01-01 00:00:00"(Unix纪元)以来的秒数的对象.

as.numeric(tempDateTime)
# 1499874000
Run Code Online (Sandbox Code Playgroud)

因此,手动方式来缩小工作时间

as.POSIXct(floor(as.numeric(tempDateTime) / 3600) * 3600, origin = "1970-01-01")
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这将返回一个`POSIXlt`对象,而不是`POSIXct`. (2认同)