2012-08-08 10 views
45

xtsオブジェクトをサブセット化する方法は非常に面白いです。例えば、1はすべての年、月、日のためにすべてのデータを取得することができますが、実行して厳密に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 

がどのように私はすべての月と年のすべてのすべての年のための唯一の特定の数ヶ月のためのデータや特定日のみを取得することができます?その他のサブセット設定の仕掛はありますか?

+2

quantmod.comを見ましたか?具体的には、例http://www.quantmod.com/examples/data/ – GSee

+0

ここでは、 'which.i'を使ってサブセットを逆にする方法を示します:http://stackoverflow.com/a/32029644/841830 –

+0

dt ['2009'、] '、年月をフィルタリング' dt [':2009-01'、] '日付範囲を使用する:' dt ['2009-01-01 :: 2009-02-01' ] '。 – marbel

答えて

37

.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 
+0

非常に良い。私はそれらを覚えていない。 – GSee

+12

私はこれがドットの背後にあるこれらのユーティリティ機能を備えているので、パッケージの作者が特に意味すると考えます。 –

15

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

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

は、Windowsと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に対する結果は、窓やUbuntuの間で一貫しています。しかし、は、windowsmonとubuntuの日付をyearmonに変換した後に異なる結果を生成します。

関連する問題