cut.POSIXt:为什么POSIX不是一个日期时间对象?

时间:2016-08-03 14:42:00

标签: r datetime posixct

我已经阅读了许多类似的问题,但找不到我的问题的答案,即使它似乎微不足道;我只是没有看到问题的原因

我有时间戳测量(带有一些基于偏移的数字时间戳),我想在不同的时间间隔聚合进行分析。为了便于阅读,我将时间戳转换为人类可读的时间戳(使用带有as.POSIXlt()origin参数的tz="UTC"

在整数值cut()上运行良好,但我不能使其适用于POSIXlt值。根据手册(以及我发现的一些答案),它应该是开箱即用的。

Browse[1]> str(cols$time)
List of 39531
 $ : POSIXct[1:1], format: "2016-07-05 00:00:58"
 $ : POSIXct[1:1], format: "2016-07-05 00:02:02"
 $ : POSIXct[1:1], format: "2016-07-05 00:03:06"
 $ : POSIXct[1:1], format: "2016-07-05 00:04:10"
 $ : POSIXct[1:1], format: "2016-07-05 00:05:14"
 $ : POSIXct[1:1], format: "2016-07-05 00:06:18"
[...]
 $ : POSIXct[1:1], format: "2016-07-05 01:44:26"
 $ : POSIXct[1:1], format: "2016-07-05 01:45:30"
  [list output truncated]
Browse[1]> cut(cols$time, breaks="5 min")
Fehler in cut.default(cols$time, breaks = "5 min") : 
  'x' muss numerisch sein
Browse[1]> cut.POSIXt(cols$time, breaks="5 min")
Fehler in cut.POSIXt(cols$time, breaks = "5 min") : 
  'x' muss ein date-time Objekt sein
Browse[1]>

对不起德语区域设置(以及错误消息)) 我希望R将总时间间隔细分为n等长间隔或特定持续时间间隔。

其他信息:

我写了这个辅助函数(实际上数学有点复杂,但原理是这个):

POSIX <- function(day, offset) {
    origin <- "1970-01-01 00:00:00"
    return(as.POSIXlt(day * 86400 + offset, origin=origin, tz="UTC"))
}

(在一天内收到天数偏移量,返回POSIXlt时间戳

最终时间戳本身是在双向过程中创建的:

for (d in dayLevels) {
    days[[d]] <- POSIX(as.numeric(d), 0)
}

cols$time <- lapply(1:rows, function(i) return(cols$day[[i]] + cols$time[i])

(我向POSIXlt添加小数秒)

0 个答案:

没有答案