返回另一个子集的时间范围内的时间帧的数据?(Return data subset time fram

2019-06-17 16:14发布

有子集化的非常漂亮的方式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

我怎样才能得到只有某些个月,所有年份的所有几个月和几年的所有数据,或者只有某些天? 做任何其他的子集化技巧存在吗?

Answer 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


Answer 2:

时间的日子集是有点隐蔽,所以我理解为什么它会引发这样的问题。 其他唯一的“伎俩”我知道的是lastfirst功能,如果你需要,你可以嵌套。 例如,这将获得第3周的最后2天。

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


Answer 3:

要知道,那里似乎是不同的行为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。



文章来源: Return data subset time frames within another timeframes?