我想使用一个半小时的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”等...
谢谢!
答案 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"
,显然,这很容易修改,而且很容易