3

quantmod の「to.weekly」関数を使用して、毎日の株価データ (終値のみ) を毎週の株価データに集計しようとしています。xts オブジェクトfooは、2011 年 1 月 3 日月曜日から 2011 年 9 月 20 日月曜日までの株式の毎日の株価データを保持します。この毎日のデータを集計するために、以下を使用しました。

tmp <- to.weekly(foo)

上記のアプローチはtmp、quantmod docs に従って、一連の毎週の OHLC データ ポイントを保持するという点で成功しています。問題は、シリーズが 2011 年 1 月 3 日の月曜日に始まり、その後の各週も月曜日に始まることです。たとえば、1 月 10 日の月曜日、1 月 17 日の月曜日などです。毎週のシリーズが 1 月 7 日金曜日に開始し、9 月 16 日金曜日に終了するように、週がデフォルトで金曜日に終了することを期待していました。

データの開始と終了を調整し、「endof」または「startof」を indexAt パラメータと一緒に使用して実験しましたが、金曜日で終わる週を返すことができません。

いただいた洞察に感謝します。(申し訳ありませんが、dput ファイルを添付する方法が見つからなかったため、データを以下に示します)

フー:

2011-01-03 2802
2011-01-04 2841
2011-01-05 2883
2011-01-06 2948
2011-01-07 2993
2011-01-10 2993
2011-01-11 3000
2011-01-12 3000
2011-01-13 3025
2011-01-14 2970
2011-01-17 2954
2011-01-18 2976
2011-01-19 2992
2011-01-20 2966
2011-01-21 2940
2011-01-24 2969
2011-01-25 2996
2011-01-26 2982
2011-01-27 3035
2011-01-28 3075
2011-01-31 3020

tmp:

           foo.Open foo.High foo.Low foo.Close
2011-01-03     2802     2802    2802      2802
2011-01-10     2841     2993    2841      2993
2011-01-17     3000     3025    2954      2954
2011-01-24     2976     2992    2940      2969
2011-01-31     2996     3075    2982      3020
4

2 に答える 2

1

Close 値のみを生成するものを思いつきました。おそらく、さらにハッキングして OHLC シリーズを返すことができます。

fooがオブジェクトであると仮定するとxts、まず金曜日のインデックスのベクトルを作成します。

fridays = as.POSIXlt(time(foo))$wday == 5

次に、先頭に0:

indx <- c(0, which(fridays))

そして使用period.apply

period.apply(foo, INDEX=indx, FUN=last)

結果:

          [,1]
2011-01-07 2993
2011-01-14 2970
2011-01-21 2940
2011-01-28 3075
于 2011-09-20T13:24:16.567 に答える