有子集化的非常漂亮的方式xts
对象。 例如,一个可以得到所有的数据全部年,月,天,但被严格9:30 AM至下午4点之间做:
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
我怎样才能得到只有某些个月,所有年份的所有几个月和几年的所有数据,或者只有某些天? 做任何其他的子集化技巧存在吗?
您可以使用.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
时间的日子集是有点隐蔽,所以我理解为什么它会引发这样的问题。 其他唯一的“伎俩”我知道的是last
和first
功能,如果你需要,你可以嵌套。 例如,这将获得第3周的最后2天。
last(first(my_xts, "3 weeks"), "2 days")
要知道,那里似乎是不同的行为xts
为Windows和Ubuntu的一个yearmon日期格式的子集。
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
是Windows和Ubuntu之间是一致的,因为格式是完整的日期。 然而, x3
会产生不同的结果适用于Windows和Ubuntu,日期的转换后yearmon。