Подтвердить что ты не робот

Возвращать временные рамки подмножества данных в другие временные рамки?

Есть очень отличные способы подмножества объектов xts. Например, можно получить все данные за все годы, месяцы, дни, но строго с 9:30 до 16:00:

my_xts["T09:30/T16:00"]

Или вы можете получить все наблюдения между двумя датами, выполнив:

my_xts["2012-01-01/2012-03-31"]

Или все даты до/после определенной даты:

my_xts["/2011"]  # from start of data until end of 2011
my_xts["2011/"]  # from 2011 until the end of the data

Как я могу получить все данные только за определенные месяцы на все годы или только на определенные дни в течение всех месяцев и лет? Существуют ли какие-либо другие подмножества?

4b9b3361

Ответ 1

Вы можете использовать семейство функций .index*, чтобы получить определенные месяцы или определенные дни месяца. См. ?index для полного списка функций. Например:

library(quantmod)
getSymbols("SPY")
SPY[.indexmon(SPY)==0]   # January for all years (note zero-based indexing!)
SPY[.indexmday(SPY)==1]  # The first of every month
SPY[.indexwday(SPY)==1]  # All Mondays

Ответ 2

Подсчет времени в день немного скрыт, поэтому я понимаю, почему он вызвал бы такой вопрос. Единственный "трюк", который я знаю, это функции last и first, которые вы можете вложить, если вам нужно. например это получит последние 2 дня первых 3 недель.

last(first(my_xts, "3 weeks"), "2 days")

Ответ 3

Имейте ввиду, что для xts подмножества формата даты для окон и ubuntu существует другое поведение.

library(quantmod)
library(xts)

getSymbols("SPY", src="google", from = "2004-01-01")
x1 <- SPY['2006-01/2007-12']

x2 <- apply.monthly(x1,mean)
x2['2006-01/2007-12']

x3 <- as.xts(coredata(x2),order.by = as.yearmon(index(x2)))
x3['2006-01/2007-12']

Результат для x2 согласован между окнами и ubuntu, так как формат является полной датой. Тем не менее, x3 приведет к другому результату для окон и ubuntu после преобразования дат в yearmon.