4

皆さんのほとんどにとって些細なことかもしれない質問があります。いろいろ試してみましたが、解決には至らなかったので、誰かがヒントをくれたら嬉しいです。開始点は、毎週のxts時系列です。

月と週の価値目標
2011年12月W50aa  
2011年12月W51bmean(a、b)
2011年12月W52cmean(a、b、c)
2011年12月W53dmean(a、b、c、d)
2012年1月W01ee
2012年1月W02fmean(e、f)
2012年1月W03g平均(e、f、g)
2012年1月W04hmean(e、f、g、h)
2012年2月W05ii
2012年2月W06jmean(i、j)

Excel表記を失礼しますが、私が何をしたいのかはかなり明確になっていると思います。「値」列の左側の移動平均を計算したいのですが、目標列に表示されているので、それぞれの月だけです。 。apply.monthly()period.apply ()を試してみました。しかし、それは私が望むものを私に与えませんでした。あなたの誰かが私に問題を解決する方法のヒントを与えることができますか?どの関数を使うべきかというヒントはもう十分でしょう!

どうもありがとうございます!

よろしくお願いします、

アンドレアス

4

2 に答える 2

2

私はあなたの質問が正しかったことを願っています。しかし、それはあなたが探しているものですか?

 require(plyr)
 require(PerformanceAnalytics)
 ddply(data, .(Week), summarize, Goal=apply.fromstart(Value,fun="mean"))

これは機能するはずですが、再現可能な例があれば良かったでしょう。

これが何をするかです。

df <- data.frame(Week=rep(1:5, each=5), Value=c(1:25)*runif(25)) #sample data

require(plyr)
require(PerformanceAnalytics)

df$Goal <- ddply(df, .(Week), summarize, Goal=apply.fromstart(Value,FUN="mean"))[,2]

結果:

    Week      Value       Goal
 1     1  0.7528037  0.7528037
 2     1  1.9622622  1.3575330
 3     1  0.3367802  1.0172820
 4     1  2.5177284  1.3923936

もちろん、ヘルプを介して詳細情報を取得することもできます:?ddplyまたは?apply.fromstart

于 2012-02-08T09:50:37.993 に答える
2

apply.monthly期間のエンドポイントに1つの値しか割り当てないため、機能しませんが、各月の期間に多くの値を割り当てる必要があります。

xtsデータを月ごとに分割し、それぞれに累積平均関数を適用し、リストを元に戻すことで、これを非常に簡単に行うことができます。

library(quantmod)
# Sample data
getSymbols("SPY")
spy <- to.weekly(SPY)
# Cumulative mean function
cummean <- function(x) cumsum(x)/seq_along(x)
# Expanding average calculation
spy$EA <- do.call(rbind, lapply(split(Cl(spy),'months'), cummean))
于 2012-02-08T11:05:54.287 に答える