首页 > 解决方案 > 我可以在 R 中指定时间序列的日期和时间吗?

问题描述

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

我使用了以下格式。

      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 中的时间序列对象。谢谢。

标签: rtimetime-seriesforecast

解决方案


尝试以下操作:

使用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)

推荐阅读