web-dev-qa-db-ja.com

別のタイムフレーム内のデータサブセットタイムフレームを返しますか?

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

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

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

48
Alex

.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
39
Joshua Ulrich

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

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

ウィンドウとUbuntuのyearmon日付形式のxtsサブセット化には異なる動作があるように見えることに注意してください。

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に変換した後、ウィンドウとUbuntuで異なる結果を生成します。

3
Francis