48

オブジェクトをサブセット化する非常に気の利いた方法がありxtsます。たとえば、次のようにして、すべての年、月、日のすべてのデータを取得できますが、厳密には午前 9 時 30 分から午後 4 時までの間です。

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

または、次のようにして、2 つの日付間のすべての観測値を取得できます。

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

すべての年の特定の月のみ、またはすべての月と年の特定の日のみのすべてのデータを取得するにはどうすればよいですか? 他のサブセット化のトリックはありますか?

4

3 に答える 3

40

関数ファミリーを使用して、.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
于 2012-08-08T19:25:58.933 に答える
15

時刻のサブセット化は少し隠されているので、なぜこのような質問が発生するのか理解できます。私が知っている他の唯一の「トリック」は、必要に応じてネストできるlastand関数です。firstたとえば、これは最初の3週間の最後の2日間を取得します。

last(first(my_xts, "3 weeks"), "2 days")
于 2012-08-08T19:22:23.223 に答える
3

xtsWindows と 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日付を yearmon に変換すると、windows と ubuntu で異なる結果が生成されます。

于 2016-04-15T16:45:44.823 に答える