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

Create a decimal hour column from a half-hourly datetime

我想使用 POSIXct 格式的半小时日期时间列创建一个包含十进制小时的新列。

基本上我的日期时间列是这样的: “2015-09-01 09:00:00、2015-09-01 09:30:00、2015-09-01 10:00:00”等...

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

谢谢!

我以你的一个时代为例。

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

代码提供了所需的输出。

具体原因,请参阅 Matthew Lundberg 的回答 link: Extracting time from POSIXct.

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

显然,如果您希望在 "mins" "days" 等中输出 units=,这很简洁且易于更改...