Возвращать временные рамки подмножества данных в другие временные рамки?
Есть очень отличные способы подмножества объектов 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
Как я могу получить все данные только за определенные месяцы на все годы или только на определенные дни в течение всех месяцев и лет? Существуют ли какие-либо другие подмножества?
Ответы
Ответ 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.