1

我刚刚开始使用 R - 并且在一些时间序列数据上遇到了一些僵局。

我有一个“动物园”格式的时间序列(日期和值),我想在事件发生时用叉号进行注释。这些事件是不规则的,采用 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 处理原始数据?

非常感谢

4

2 回答 2

2

提供数据样本可以让您得到更准确的答案,但您有两个通用选项:

使用现有plot.zoo()函数,您可以在绘图完成后使用(例如)该text()函数添加注释。或者使用ggplot2,您可以采用类似的方法来创建绘图并添加注释(尽管它本身并不接受zoo对象作为输入)。

或者,chartSeriesinquantmod有许多为此目的而设计的函数,它接受zoo作为输入。

编辑:

关于如何处理您在问题中发布的数据的快速评论。第二组日期应转换为动物园对象(可能带有某种能指作为数据,例如单词“tweet”),然后与原始系列合并。因此,您的时间序列中将有一个额外的列来表示这些不常见的事件。在大多数情况下,此列将是NA

于 2010-06-09T15:27:46.883 回答
2

创建动物园系列、价格和 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))

如果您只想显示用垂直线覆盖的 Close 来说明 dd.character 中的日期,另一种可能性是:

plot(price$Close)
abline(v = time(dd.zoo))
于 2010-06-14T04:07:56.013 回答