【问题标题】:Creating time index that creates same intervals every day创建每天创建相同间隔的时间索引
【发布时间】:2016-11-02 04:58:42
【问题描述】:

我想创建一个从 9:15:00 开始的时间索引,并在 03:30:00 结束之前以 50 分钟为间隔进行一次。例如。 9:15:00、10:05:00、10:55:00 等。这是我的代码,可以完美地为第一天创建这些时间索引。但是,它在第​​二天变得一团糟,从 09:15:00 而不是 09:15:00 开始,并且所有间隔都出错了。开始时间每天都在变化。

Intervals <- seq(as.POSIXct("2016-04-01 09:15:00", format="%Y-%m-%d %H:%M:%S"), as.POSIXct("2016-04-29 15:30:00", format="%Y-%m-%d %H:%M:%S"),
                   by="50 min")

由于我试图通过仅将参数 by="50 min" 更改为 by="55 min" 来计算各种间隔,并且需要灵活地确定结束时间,所以我将其设置为 15:30:00 之前 。请我修复它?

【问题讨论】:

  • 四月什么时候有31天了?我认为你有一个错字。
  • 您的时间间隔也从未达到 03:30:00。为什么你会认为它每天都会回到同一个起点?你没有按照一个小时或一天的间隔来进步。
  • @thelatemail 感谢您帮助我约会。我想在 15:30:00 之前结束,所以在这种情况下,它在 15:05:00 结束。由于我试图通过仅更改 by="50 min" 例如更改为 by="55 min" 来计算各种间隔,并且需要灵活地确定结束时间,所以我将其设置为“15:30:00 之前”跨度>
  • 如果你只计算一天(开始和停止都是“2016-04-01”),然后再加上一堆天怎么办?类似Intervals + as.difftime(rep(0:10,each=length(Intervals)), units="days")
  • Intervals &lt;- seq( as.POSIXct("2016-04-01 09:15:00"), as.POSIXct("2016-04-01 15:30:00"), by="50 min" ) 然后Intervals + as.difftime(rep(0:10,each=length(Intervals)), units="days") - 这应该可以为您提供每天在同一点开始和结束的一致顺序。

标签: r xts posixct


【解决方案1】:

您最好生成一个序列并每天重复使用它。因此:

start <- "2016-04-01"
stop  <- "2016-04-29"
daylength <- difftime(as.POSIXct(stop), as.POSIXct(start), units="days")

Intervals <- seq(
  as.POSIXct(paste(start, "09:15")),
  as.POSIXct(paste(start, "15:30")),
  by="50 min"
)

out <- Intervals + as.difftime(rep(0:daylength, each=length(Intervals)), units="days")
range(out)
#[1] "2016-04-01 09:15:00 AEST" "2016-04-29 15:05:00 AEST"

【讨论】:

  • as.POSIXct(..., tz="insert_timezone_here") 用于每个部分。在 R 中输入 OlsonNames() 并按 Enter 以查看您的系统上有哪些时区选项。
【解决方案2】:

使用cut 函数可能值得探索。例如对于 days 的集合:

myDays <-
    seq(
        from = as.Date("2016-04-01"),
        to = as.Date("2016-04-29"),
        by = "day"
    )

可以通过以下方式每天每隔 50 分钟到达:

myIntervals <-
    data.frame(table(cut(x = as.POSIXct(myDays), breaks = "50 min")))

预览

>> head(myIntervals, 10)
                  Var1 Freq
1  2016-04-01 01:00:00    1
2  2016-04-01 01:50:00    0
3  2016-04-01 02:40:00    0
4  2016-04-01 03:30:00    0
5  2016-04-01 04:20:00    0
6  2016-04-01 05:10:00    0
7  2016-04-01 06:00:00    0
8  2016-04-01 06:50:00    0
9  2016-04-01 07:40:00    0
10 2016-04-01 08:30:00    0

【讨论】:

    猜你喜欢
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多