从半小时的日期时间创建一个十进制小时列

时间:2018-11-08 23:36:04

标签: r decimal posixct hour

我想使用一个半小时的datetime列(采用POSIXct格式)创建一个包含十进制小时的新列。

基本上我的datetime列是这样的: “ 2015-09-01 09:00:00,2015-09-01 09:30:00,2015-09-01 10:00:00”等...

我希望新的十进制小时列如下所示: “ 9、9.5、10”等...

谢谢!

2 个答案:

答案 0 :(得分:1)

我以您的其中一次为例。

time <- as.POSIXct("2015-09-01 09:30:00", tz = "GMT")
(as.numeric(time) %% 86400) / 3600
[1] 9.5

代码提供所需的输出。

为什么,请通过以下链接查看Matthew Lundberg的答案: Extracting time from POSIXct

答案 1 :(得分:0)

difftime是一个很棒的小功能,如果您在此处与trunc结合使用,它将为您提供答案:

x <- as.POSIXct(c("2015-09-01 09:00:00", "2015-09-01 09:30:00", "2015-09-01 10:00:00"))

difftime(x, trunc(x, units="days"), units="hours")
#Time differences in hours
#[1]  9.0  9.5 10.0

如果您希望在units= "mins"等中输出"days",显然,这很容易修改,而且很容易