【问题标题】:Can I specify the dates and times of a time series in R?我可以在 R 中指定时间序列的日期和时间吗?
【发布时间】:2020-06-01 21:53:40
【问题描述】:

我有一个数据集,第一列包含时间和日期,第二列包含股票价格。

我使用了以下格式。

      Time              Price
2015-02-01 10:00         50

我想把它变成一个时间序列对象。我尝试了 ts(data) 函数,但是当我绘制数据时,我无法观察 x 轴上的日期。我也尝试了 ts(data, start=) 函数。因为我有一些时间缺少价格,而这些时间不包含在我的数据集中,所以如果我设置开始日期和频率,我的情节就会产生误导。

这是我拥有的示例数据。它被称为df。

           time         price    

1   2013-05-01 00:00:00 124.30
2   2013-05-01 01:00:00 98.99
3   2013-05-01 02:00:00 64.00
4   2013-05-01 03:00:00 64.00

这是我使用的代码

Time1 <- ts(df) 
autoplot(Time1)

也试过这个,

Time1 <- zoo(Time_series_data[,2], order.by = Time_series_data[,1])
Time_n <- ts(Time1)
autoplot(Time1)

但是,当我使用 autoplot(Time1) 绘制图形时,x 轴不显示我指定的时间,而是从 0 到 4 的数字。我想要绘制一个包含日期列的 ts 对象x 轴和 Y 中的值

有什么方法可以将其转换为 R 中的时间序列对象。谢谢。

【问题讨论】:

  • 如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。
  • ts 系列主要用于月度或季度或年度数据。对于每日数据,您可以使用各自的包创建 zoo 或 xts 系列。
  • 如果您想绘制或操作它,请将您的日期时间转换为 POSIXct。您目前可能有字符或因子数据。

标签: r time time-series forecast


【解决方案1】:

尝试以下方法:

使用 tibble 包中漂亮的 tribble 函数创建一些数据。

library(tibble)
df <- tribble(~time,      ~price,
   "2013-05-01 00:00:00", 124.30,
   "2013-05-01 01:00:00", 98.99,
   "2013-05-01 02:00:00", 64.00,
   "2013-05-01 03:00:00", 64.00)

time 列是一个字符类,不能以通常的方式绘制。所以使用as.Posixct 转换它。我将在这里使用 dplyr 包,但这是可选的。

library(dplyr)

df <- df %>%
  mutate(time=as.POSIXct(time))

接下来,将数据转换为时间序列对象。这需要 xts 包,尽管我确信还有其他选项,包括 zoo

library(xts)
df.ts <- xts(df[, -1], order.by=df$time)

现在您可以可视化数据。

plot(df.ts)  # This should call the `plot.xts` method

如果你更喜欢 ggplot2

library(ggplot2)
autoplot(df.ts)

【讨论】:

    猜你喜欢
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 2015-06-14
    • 2012-12-04
    • 2012-12-10
    相关资源
    最近更新 更多