3

日中のデータを持つ xts オブジェクトがあります。

head(stocks[,1])
                    SMH.close
2009-01-02 09:31:00     17.66
2009-01-02 09:32:00     17.66
2009-01-02 09:33:00     17.64
2009-01-02 09:34:00     17.60
2009-01-02 09:35:00     17.58
2009-01-02 09:36:00     17.63

日中のデータに対してさまざまな分析を実行したいが、操作は日の境界を越えてはならない。だから私がしたいのは、データを日付で分割することです(時間を無視して)。そのため、次の方法でインデックスを抽出し、一意の日付値を保存しました。

y <- index(stocks)
x <- strptime(y, format="%Y-%m-%d")
uniquedates <- unique(x)

今、私は ?split の例と同様のことをしたいと思います

> g <- airquality$Month
> l <- split(airquality, g)

ここで、大気質データは Month 列の値によってリスト オブジェクトに分割されます。私の場合、日付はデータ列ではなくインデックスであるため、同様のことを行う方法がわかりません。試しましたが、エラーが発生します。

> split(stocks, uniquedates)
Error in args[[i]] : subscript out of bounds

おそらく、私がやりたいことを達成するためのよりクリーンな方法があります。ご協力をお願いいたします。

4

2 に答える 2

3

unique() ステップをスキップする必要があります。引数を指定して split.xts を使用するだけf="days"です。

data(sample_matrix)
sample.xts <- as.xts(sample_matrix, descr='my new xts object')
split.xts(sample.xts, f="days")
[[1]]
               Open     High      Low    Close
2007-01-02 50.03978 50.11778 49.95041 50.11778

[[2]]
              Open     High     Low    Close
2007-01-03 50.2305 50.42188 50.2305 50.39767

[[3]]
               Open     High      Low    Close
2007-01-04 50.42096 50.42096 50.26414 50.33236

[[4]]
snipped
于 2011-05-15T01:23:31.680 に答える
0

おそらくあなたはapply.daily(またはperiod.apply一般的に)探していますか?

于 2011-05-14T23:35:18.043 に答える