r - 我可以在 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 中的时间序列对象。谢谢。
解决方案
尝试以下操作:
使用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)
推荐阅读
- sql - SQL 性能调优
- python - 返回制表符分隔表的 API 请求问题
- django - 请求中不支持的媒体类型“application/x-www-form-urlencoded”
- java - 如何从 Springboot 中的 JSON 数组中删除元素?
- php - SQLSTATE[HY000] [1045] 用户 'root'@'localhost' 的访问被拒绝(使用密码:否)。DB_HOST 设置为 localhost
- string - AttributeError: 'str' object has no attribute 'append'...适用于教师
- swift - 将 UIImage 设为圆角形式?
- ios - Xcode中opencascade库的IOS示例Lex编译错误
- c# - 基于现有标准解决方案的 Xamarin Forms 解决方案
- java - RecyclerView 不接受来自模型的构造函数