【发布时间】:2019-04-12 13:16:09
【问题描述】:
我想使用 POSIXct 格式的半小时日期时间列创建一个包含小数小时的新列。
基本上我的日期时间列是这样的: “2015-09-01 09:00:00、2015-09-01 09:30:00、2015-09-01 10:00:00”等...
我希望新的十进制小时列如下所示: “9、9.5、10”等...
谢谢!
【问题讨论】:
我想使用 POSIXct 格式的半小时日期时间列创建一个包含小数小时的新列。
基本上我的日期时间列是这样的: “2015-09-01 09:00:00、2015-09-01 09:30:00、2015-09-01 10:00:00”等...
我希望新的十进制小时列如下所示: “9、9.5、10”等...
谢谢!
【问题讨论】:
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= 等...
【讨论】:
我以你的一个时代为例。
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.
【讨论】: