7

私はxtsサブセット化機能に精通しています。ただし、パラメータ化された日付の範囲をサブセット化するための洗練された方法を見つけることができません。このようなもの:

times = c(as.POSIXct("2012-11-03 09:45:00 IST"),
          as.POSIXct("2012-11-05 09:45:00 IST"))

#create an xts object:
xts.obj = xts(c(1,2),order.by = times)

#filter with these dates:
start.date = as.POSIXct("2012-11-03")
end.date = as.POSIXct("2012-11-04")

#instead of xts["2012-11-03"/"2012-11-04"], do something like this:
xts[start.date:end.date]

誰かが何か考えを持っていますか?ありがとう!

4

4 に答える 4

9

start.dateend.dateオブジェクトを一緒に貼り付け、"::"またはで区切って"/"から、それを使用してサブセット化することができます。

R> xts.obj[paste(start.date,end.date,sep="::")]
                    [,1]
2012-11-03 09:45:00    1
于 2012-12-31T13:25:15.220 に答える
2

の助けから[.xts {xts}

xtsはすべてのユーザーレベルのインデックスクラスのPOSIXct時間表現を内部で使用するため、元のオブジェクトのindexClassに関係なく、最速のtimeBasedサブセットは常にPOSIXctオブジェクトからのものになります。

したがって、次のようにtimeBasedのサブセット化を行うことができます。

xts.obj[seq(start.date,end.date,by=60)]
                    [,1]
2012-11-03 09:45:00    1
于 2012-12-31T13:18:49.983 に答える
1

Posix以外でこれを行うために頭を悩ませている人のために。特に四半期ベースのデータ、つまり2001年第2四半期から2006年第3四半期まで。

シンプルでありながらエレガントなソリューションを使用しました。

library(xts)

starting.quarter<-"200101"
ending.quarter<-"201702"

oil_price_by_qtr<-oil_price_by_qtr[paste(starting.quarter,ending.quarter,sep="/")]

そして、これにより、XTSオブジェクトが2001年第1四半期から2017年第2四半期にサブセット化されます。

これが他の貧しい魂が彼の人生の2時間を失うことを避けるのを助けるかもしれません。

于 2017-05-15T04:31:24.260 に答える
0

私は同じことをする必要がありました。これが、元の例に基づいた私の解決策です。

library(xts)

times = c(as.POSIXct("2012-11-03 09:45:00 IST"),
          as.POSIXct("2012-11-05 09:45:00 IST"))

#create an xts object:
xts.obj = xts(c(1,2),order.by = times)

#filter with these dates:
start.date = as.POSIXct("2012-11-03")
end.date = as.POSIXct("2012-11-04")

# By using an index that is the logical AND of two vectors
xts.obj[start.date <= index(xts.obj) & index(xts.obj) <= end.date]
于 2015-12-14T11:38:29.380 に答える