2012-12-19 7 views
5

xts(または動物園)がapply.periodを実行した後に時間として使用するものを調べようとしています。apply.weekly()で完全な週を強制する

> myTs = xts(1:10, as.Date(1:10, origin = '2012-12-1')) 
> apply.weekly(myTs, colSums) 
      [,1] 
2012-12-02 1 
2012-12-09 35 
2012-12-11 19 

「2012-12-02」は「2012-12-02の週のうち、合計は1」と考えています。だから基本的には時間は週末です。

しかし、問題はその「2012年12月11日」である - 私は、11日にはを与えられた週の最後の日であることを言っていること、それはやっているを考える、それは時間とすることを与えています。

データセットにその日が含まれていなくても、日曜日にそれを強制的に終了する方法はありますか?

答えて

3

これを試してみてください:私はなぜ

は、例えばあなたが流れるが行うことができます(多分設計の選択は、一意のインデックスを取得する)知らないnextsunnextfriコードから派生した

nextsun <- function(x) 7 * ceiling(as.numeric(x-0+4)/7) + as.Date(0-4) 
aggregate(myTs, nextsun, sum) 

zoo quick referenceには、5(金曜日)を0(日曜日)に置き換えます。

3

完全な週です。最後の観測日だけを表示しています。 ?endpointsapply.weekly、本質的にエンドポイント用の薄いラッパーです)を参照してください。より

apply.weekly 
function (x, FUN, ...) 
{ 
    ep <- endpoints(x, "weeks") 
    period.apply(x, ep, FUN, ...) 
} 
<environment: namespace:xts> 

?エンドポイント

エンドポイントがゼロベクトルの 先頭に追加して、上で指定された各期間の最後 観察に対応する数値ベクトルを返し、インデックスxの最後の観測は で終わりです。上の引数の

有効な値は次のとおりです。「私たち」(マイクロ秒)、 「マイクロ秒」、「MS」(ミリ秒)、「ミリ秒」、「秒」(秒)、 「秒」、「分」 (分)、「分」、「時」、「日」、「週」、 「月」、「四半期」、および「年」です。

2番目の質問への回答は、いいえ、そうするオプションはありません。しかし、あなたはいつも手動で最後の日付を編集することができます。とにかくすべてのデータを表示する場合、私はそれに害は見られません。

2

いいえ、それはあなたに日曜日を与えることはできません。

period.applyの結果のインデックスはあなたが最後の日付をシフトする必要が

ep <- endpoints(myTs,'weeks') 

myTs[ep] 
      [,1] 
2012-12-02 2 
2012-12-09 9 
2012-12-10 10 

で与えられるので。残念ながら、xtsはこのオプションを提供していません。インデックスの単一の値をシフトすることはできません。

ts.weeks <- apply.weekly(myTs, colSums) 
ts.weeks[length(ts.weeks)] <- last(index(myTs)) + 7-last(floor(diff(ep))) 
関連する問題