2

オブジェクトを使用していxtsます。オブジェクトのインデックスは次のとおりです。1 年間、1 日の 1 時間ごとに 1 つあります。

"2011-01-02 18:59:00 EST"
"2011-01-02 19:58:00 EST"
"2011-01-02 20:59:00 EST"

列には、各インデックス エントリに関連付けられた値があります。私がやりたいことは、18:591 年間のすべての月曜日の値の標準偏差を計算することです。年には 52 個の値が必要です。

関数を使用して曜日を検索することはできますweekdays()が、私の問題は、18:59:00またはその他の時間などの時間を検索することです。

4

2 に答える 2

1

これを行うには、 を使用してとinteractionの組み合わせから因子を作成し、を使用して xts オブジェクトから関連する観測を選択します。weekdays.indexhoursplit

set.seed(21)
x <- .xts(rnorm(1e4), seq(1, by=60*60, length.out=1e4))
groups <- interaction(weekdays(index(x)), .indexhour(x))
output <- lapply(split(x, groups), function(x) c(count=length(x), sd=sd(x)))
output <- do.call(rbind, output)
head(output)
#            count        sd
# Friday.0      60 1.0301030
# Monday.0      59 0.9204670
# Saturday.0    60 0.9842125
# Sunday.0      60 0.9500347
# Thursday.0    60 0.9506620
# Tuesday.0     59 0.8972697
于 2013-05-29T13:06:30.387 に答える
0

一連の関数を使用できます.index*(「index」の前の「.」を忘れないでください!):

fxts[.indexmon(fxts)==0]   # its zero-based (!) and gives you all the January values
fxts[.indexmday(fxts)==1]  # beginning of month
fxts[.indexwday(SPY)==1]   # Mondays

require(quantmod)

> fxts
                value
2011-01-02 19:58:00     1
2011-01-02 20:59:00     2
2011-01-03 18:59:00     3
2011-01-09 19:58:00     4
2011-01-09 20:59:00     5
2011-01-10 18:59:00     6
2011-01-16 18:59:00     7
2011-01-16 19:58:00     8
2011-01-16 20:59:00     9`

fxts[.indexwday(fxts)==1]  #this gives you all the Mondays

あなたが使用する時間をサブセット化するため

fxts["T19:30/T20:00"] # this will give you the time period you are looking for

ここでは、平日と期間を組み合わせます

fxts["T18:30/T20:00"] & fxts[.indexwday(fxts)==1] # to get a logical vector or
fxts["T18:30/T21:00"][.indexwday(fxts["T18:30/T21:00"])==1] # to get the values

>                   value
2011-01-03 18:58:00     3
2011-01-10 18:59:00     6
于 2013-05-29T07:27:23.577 に答える