【问题标题】:Create a time series by 30 minute intervals以 30 分钟为间隔创建时间序列
【发布时间】:2016-02-09 16:10:43
【问题描述】:

我正在尝试创建一个间隔为 30 分钟的时间序列。我使用了以下命令并显示了输出:

ts = seq(as.POSIXct("2009-01-01 00:00"), as.POSIXct("2014-12-31 23:30"),by = "hour") 

"2010-02-21 12:00:00 EST" "2010-02-21 13:00:00 EST" "2010-02-21 14:00:00 EST"

当我将其更改为 by ="min" 时,它会更改为每分钟。

如何创建每 30 分钟间隔的时间序列?

【问题讨论】:

  • 来自?seq.Date: seq(from, to, by = "30 min")

标签: r datetime seq


【解决方案1】:

您可以在 by 参数中指定分钟,并传递 Adrian 指出的时区“UTC”。有关指定为字符串的 by 参数的更多详细信息,请查看 ?seq.POSIXt

一个字符串,包含“sec”、“min”、“hour”、“day”之一, “DSTday”、“week”、“month”、“Quarter”或“year”。这可以是可选的 前面有一个(正或负)整数和一个空格,或后面 按“s”。

ts <- seq(as.POSIXct("2017-01-01", tz = "UTC"),
    as.POSIXct("2017-01-02", tz = "UTC"),
    by = "30 min")
head(ts)

输出

[1] "2017-01-01 00:00:00 UTC"
[2] "2017-01-01 00:30:00 UTC"
[3] "2017-01-01 01:00:00 UTC"
[4] "2017-01-01 01:30:00 UTC"
[5] "2017-01-01 02:00:00 UTC"
[6] "2017-01-01 02:30:00 UTC"

【讨论】:

    【解决方案2】:

    默认单位是秒。因此,只需执行 1800 秒即可获得 30 分钟。

    ts = seq(as.POSIXct("2009-01-01 00:00"), as.POSIXct("2014-12-31 23:30"),by = 1800)

    ts[1:20] [1] "2009-01-01 00:00:00 EST" "2009-01-01 00:30:00 EST" "2009-01-01 01:00:00 EST" "2009-01-01 01:美国东部时间 30:00" "美国东部时间 2009 年 1 月 1 日 02:00:00" [6]“2009-01-01 02:30:00 EST”“2009-01-01 03:00:00 EST”“2009-01-01 03:30:00 EST”“2009-01-01 04: 00:00 EST" "2009-01-01 04:30:00 EST" [11]“2009-01-01 05:00:00 EST”“2009-01-01 05:30:00 EST”“2009-01-01 06:00:00 EST”“2009-01-01 06:美国东部时间 30:00" "美国东部时间 2009 年 1 月 1 日 07:00:00" [16]“2009-01-01 07:30:00 EST”“2009-01-01 08:00:00 EST”“2009-01-01 08:30:00 EST”“2009-01-01 09: 00:00 EST" "2009-01-01 09:30:00 EST"

    【讨论】:

    • 谢谢阿德里安,但我怎样才能将其更改为 UTC 而不是 EST
    • 可以使用 attr() 函数。 attr(ts, "tzone")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 2022-01-15
    • 2021-05-18
    • 2019-09-05
    • 2020-03-03
    • 2019-09-28
    相关资源
    最近更新 更多