R:期间(月)的左侧移动平均线

R:期间(月)的左侧移动平均线,r,plyr,xts,moving-average,R,Plyr,Xts,Moving Average,我有一个问题,对你们大多数人来说可能微不足道。我尝试了很多,但没有找到解决办法,所以如果有人能给我一个提示,我会很高兴。起点是每周的xts时间序列 Month Week Value Goal Dec 2011 W50 a a Dec 2011 W51 b mean(a,b) Dec 2011 W52 c mean(a,b,c) Dec 2011 W53 d mean(a,b,c,d) Jan 2012 W01 e e Jan 2012

我有一个问题,对你们大多数人来说可能微不足道。我尝试了很多,但没有找到解决办法,所以如果有人能给我一个提示,我会很高兴。起点是每周的xts时间序列

Month Week Value Goal Dec 2011 W50 a a Dec 2011 W51 b mean(a,b) Dec 2011 W52 c mean(a,b,c) Dec 2011 W53 d mean(a,b,c,d) Jan 2012 W01 e e Jan 2012 W02 f mean(e,f) Jan 2012 W03 g mean(e,f,g) Jan 2012 W04 h mean(e,f,g,h) Feb 2012 W05 i i Feb 2012 W06 j mean(i,j) 月周价值目标 2011年12月W50 a 2011年12月W51 b平均值(a,b) 2011年12月W52 c平均值(a、b、c) 2011年12月W53 d平均值(a、b、c、d) 2012年1月01日东经 2012年1月W02 f平均值(e,f) 2012年1月W03 g平均值(e、f、g) 2012年1月W04 h平均值(e、f、g、h) 2012年2月05日星期一 2012年2月W06 j平均值(i,j) 请原谅Excel符号,但我认为它清楚地说明了我要做的事情:我想计算列“值”的左侧移动平均值,但只计算相应月份的移动平均值,如列“目标”中所示。我尝试了apply.monthly()period.apply()。但这并没有得到我想要的。你们能给我一个如何解决这个问题的提示吗?只要提示我应该使用哪个函数就足够了

多谢各位

致以最良好的祝愿


安德烈亚斯

我希望我没有弄错你的问题。但这就是你想要的:

 require(plyr)
 require(PerformanceAnalytics)
 ddply(data, .(Week), summarize, Goal=apply.fromstart(Value,fun="mean"))
这应该行得通——尽管a会很好

这就是它的作用

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]

当然,您可以通过帮助获得更多信息:
?ddply
?apply.fromstart

apply.monthly
将不起作用,因为它只为时段的端点分配一个值,而您希望为每个月时段分配多个值

您可以很容易地做到这一点,方法是按月拆分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))
库(quantmod)
#样本数据
getSymbols(“间谍”)

这通常被称为“扩展窗口”平均值。非常感谢-通常我知道我想要做什么,但我只是缺少正确的搜索词。这是其中一个案例;-)非常感谢你!你的解决方案完全符合我的要求!谢谢你的快速回复!!!或者将最后一行替换为:
spy$EA谢谢,我也尝试了解决方案,它也应该这么做。约书亚的话对我来说似乎更清楚了。然而,我认为有一个小小的误解:ddply(df,.(Week),…)。我必须使用由行名创建的带有月份的索引向量。
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))