从半小时日期时间创建十进制小时列
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=
,这很简洁且易于更改...
我想使用 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=
,这很简洁且易于更改...