我刚刚开始使用R - 并且使用一些时间序列数据打了一些僵局。
我有'zoo'格式的时间序列(日期和值),我希望在事件发生时用十字注释。这些事件是不规则的,采用csv格式(只是日期,有时会重复)。
我已经设法在日期等中读取R接受的格式 - 但我似乎无法获得一个方法来绘制主要时间序列以及在顶部注释的辅助事件?
更新 对不起,我之前错过了 - 下面是我正在使用的数据类型:
price <- get.hist.quote(instrument = "msft", quote = c("Cl", "Vol"))
我现在想比较一下推文的数量(对于搜索词),但我只有表格中的参差不齐的数据:
"February 28, 2010"
"February 20, 2010"
"February 20, 2010"
"August 21, 2009"
有些人重复了。 到目前为止,我已经设法写了一个python脚本来做一些清理(即一个日期,事件的元组),但我希望我可以使用R来处理原始数据?
非常感谢
答案 0 :(得分:2)
提供数据样本可以为您提供更精确的答案,但您有两个常规选项:
使用现有的plot.zoo()
函数,您可以在使用(例如)text()
函数完成绘图后添加注释。或者使用ggplot2
,您可以采用类似的方法创建绘图并添加注释(尽管它本身不接受zoo
个对象作为输入。)
或者,chartSeries
中的quantmod
有许多为此目的而设计的功能,并接受zoo
作为输入。
编辑:
关于如何处理您在问题中发布的数据的快速评论。应将第二组日期转换为动物园对象(可能使用某种能指示符作为数据,例如单词“tweet”),然后与原始系列合并。因此,您的时间序列中将有一个代表这些不常见事件的附加列。在大多数情况下,此列将为NA
。
答案 1 :(得分:2)
创建zoo系列,price和dd.zoo(其中dd.zoo是dd.character中每个日期的出现次数为动物园对象),然后将它们绑定在一起并使用plot.zoo:
library(zoo)
library(tseries)
price <- get.hist.quote(instrument = "msft", quote = c("Cl", "Vol"))
dd.character <- c("February 28, 2010", "February 20, 2010",
"February 20, 2010", "August 21, 2009")
dd.Date <- as.Date(dd.character, "%B %d, %Y")
dd.zoo <- aggregate(zoo(dd.Date), dd.Date, length)
plot(cbind(price$Close, dd.zoo), type = c("l", "h"), heights = c(3, 1))
另一种可能性,如果你只想显示覆盖着垂直线的关闭,说明dd.character中的日期是:
plot(price$Close)
abline(v = time(dd.zoo))