R добавление нечастых событий даты к графику временного ряда

Я только начинаю работу с 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?

Большое спасибо


person malangi    schedule 09.06.2010    source источник


Ответы (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))
person G. Grothendieck    schedule 14.06.2010

Предоставление образца данных даст вам более точный ответ, но у вас есть два основных варианта:

Используя существующую функцию plot.zoo(), вы можете добавлять аннотации после завершения графика, используя (например) функцию text(). Или, используя ggplot2, вы можете применить аналогичный подход к созданию графика и добавлению аннотаций (хотя изначально он не принимает объекты zoo в качестве входных данных).

В качестве альтернативы, chartSeries в quantmod имеет множество функций, разработанных с этой целью, и принимает zoo в качестве входных данных.

Изменить:

Один быстрый комментарий о том, как обращаться с данными, которые вы разместили в своем вопросе. Второй набор дат должен быть преобразован в объект зоопарка (возможно, с каким-либо сигнификатором в качестве данных, например словом «твит»), а затем объединен с исходным рядом. Таким образом, у вас будет дополнительный столбец в вашем временном ряду, который представляет эти нечастые события. В большинстве случаев этот столбец будет NA.

person Shane    schedule 09.06.2010
comment
Хороший момент - обновил вопрос - будет ли plot.zoo() по-прежнему идти? - person malangi; 09.06.2010
comment
@flyingcrab - Отлично! Хотелось бы увидеть окончательный результат, если вы сможете опубликовать его. - person Shane; 10.06.2010
comment
увы - ничего интересного не вышло... но я буду продолжать :) - person malangi; 10.06.2010