在时间序列的滚动子集中计算R中的移动平均线

时间:2017-02-23 14:58:26

标签: r weighted-average

我有一个每日时间序列,我正在尝试计算一个10期移动平均线。 我遇到的麻烦是移动平均线需要在数据的滚动子集上(10个周期不连续)。我需要过去10周的平均值,从今天开始,包括今天 '今日'的价值是今天的平均值/ 5天前的价值/ 10天前的价值... /价值从45天前 要计算'昨日'值,我想昨天/ 6天前的价值/ 11天前的价值... / 46天前的价值。

我尝试了以下内容:

WMA(na.omit(data[seq(NROW(data),1,-5)]),n=10, wts=wtzd)

其中wtzd是权重向量,数据是xts时间序列对象。

数据包含2006-04-19至2017-02-03的每日观察结果

该代码的工作原理是它返回正确的值,但它只返回每周数字,而我想要计算每天的平均值。 所以,我从上面获取的数据为2017-02-03 / 2017-01-27 / 2017-01-20 .... 虽然我希望每天都能找到数据,但是对于2017-02-03 / 2017-02-02 /...

我认为必须有一个直接的解决方案,我只是无法得到它。我尝试过运行rollapply和其他一些应用函数,但没有运气。

加权向量由以下公式生成:

wtzd<-(1:10/55)

我按日期查找的正确返回值的示例是:

2017-02-03-&gt; 0.04354639(这是每5个值的加权平均值(所以2017-02-03 / 2017-01-27 ... 2016/11/29) 2017-02-02-&gt; 0.04536664(这是2017-02-02 ... 2016/11/28的加权平均值)

以下是数据样本:

<table border=0 cellpadding=0 cellspacing=0 width=139 style='border-collapse:
 collapse;table-layout:fixed;width:104pt'>
 <col width=75 style='mso-width-source:userset;mso-width-alt:2742;width:56pt'>
 <col width=64 style='width:48pt'>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl154556 width=75 style='height:15.0pt;width:56pt'>Date</td>
  <td class=xl154556 width=64 style='width:48pt'>Data</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>8/5/2016</td>
  <td class=xl154556 align=right>0.010798</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>8/8/2016</td>
  <td class=xl154556 align=right>0.011934</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>8/9/2016</td>
  <td class=xl154556 align=right>0.015761</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>8/10/2016</td>
  <td class=xl154556 align=right>0.017658</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>8/11/2016</td>
  <td class=xl154556 align=right>0.018573</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>8/12/2016</td>
  <td class=xl154556 align=right>0.018512</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>8/15/2016</td>
  <td class=xl154556 align=right>0.016978</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>8/16/2016</td>
  <td class=xl154556 align=right>0.012713</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>8/17/2016</td>
  <td class=xl154556 align=right>0.008406</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>8/18/2016</td>
  <td class=xl154556 align=right>0.003475</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>8/19/2016</td>
  <td class=xl154556 align=right>-8E-05</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>8/22/2016</td>
  <td class=xl154556 align=right>-0.00153</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>8/23/2016</td>
  <td class=xl154556 align=right>-0.00096</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>8/24/2016</td>
  <td class=xl154556 align=right>0.000888</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>8/25/2016</td>
  <td class=xl154556 align=right>0.003899</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>8/26/2016</td>
  <td class=xl154556 align=right>0.006597</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>8/29/2016</td>
  <td class=xl154556 align=right>0.006941</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>8/30/2016</td>
  <td class=xl154556 align=right>0.008899</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>8/31/2016</td>
  <td class=xl154556 align=right>0.009631</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>9/1/2016</td>
  <td class=xl154556 align=right>0.009314</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>9/2/2016</td>
  <td class=xl154556 align=right>0.008964</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>9/6/2016</td>
  <td class=xl154556 align=right>0.007931</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>9/7/2016</td>
  <td class=xl154556 align=right>0.005969</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>9/8/2016</td>
  <td class=xl154556 align=right>0.004158</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>9/9/2016</td>
  <td class=xl154556 align=right>0.004553</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>9/12/2016</td>
  <td class=xl154556 align=right>0.003861</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>9/13/2016</td>
  <td class=xl154556 align=right>0.005387</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>9/14/2016</td>
  <td class=xl154556 align=right>0.004989</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>9/15/2016</td>
  <td class=xl154556 align=right>0.005372</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>9/16/2016</td>
  <td class=xl154556 align=right>0.006748</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>9/19/2016</td>
  <td class=xl154556 align=right>0.007596</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>9/20/2016</td>
  <td class=xl154556 align=right>0.007595</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>9/21/2016</td>
  <td class=xl154556 align=right>0.00819</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>9/22/2016</td>
  <td class=xl154556 align=right>0.007539</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>9/23/2016</td>
  <td class=xl154556 align=right>0.004659</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>9/26/2016</td>
  <td class=xl154556 align=right>0.002459</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>9/27/2016</td>
  <td class=xl154556 align=right>0.000717</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>9/28/2016</td>
  <td class=xl154556 align=right>0.000757</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>9/29/2016</td>
  <td class=xl154556 align=right>0.00175</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>9/30/2016</td>
  <td class=xl154556 align=right>0.002898</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>10/3/2016</td>
  <td class=xl154556 align=right>0.004611</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>10/4/2016</td>
  <td class=xl154556 align=right>0.004674</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>10/5/2016</td>
  <td class=xl154556 align=right>0.002337</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>10/6/2016</td>
  <td class=xl154556 align=right>0.001521</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>10/7/2016</td>
  <td class=xl154556 align=right>0.000596</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>10/10/2016</td>
  <td class=xl154556 align=right>-0.00019</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>10/11/2016</td>
  <td class=xl154556 align=right>0.002114</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>10/12/2016</td>
  <td class=xl154556 align=right>0.006229</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>10/13/2016</td>
  <td class=xl154556 align=right>0.008139</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>10/14/2016</td>
  <td class=xl154556 align=right>0.011209</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>10/17/2016</td>
  <td class=xl154556 align=right>0.01471</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>10/18/2016</td>
  <td class=xl154556 align=right>0.01581</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>10/19/2016</td>
  <td class=xl154556 align=right>0.017636</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>10/20/2016</td>
  <td class=xl154556 align=right>0.020715</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>10/21/2016</td>
  <td class=xl154556 align=right>0.023097</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>10/24/2016</td>
  <td class=xl154556 align=right>0.023854</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>10/25/2016</td>
  <td class=xl154556 align=right>0.024841</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>10/26/2016</td>
  <td class=xl154556 align=right>0.024457</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>10/27/2016</td>
  <td class=xl154556 align=right>0.024512</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>10/28/2016</td>
  <td class=xl154556 align=right>0.02277</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>10/31/2016</td>
  <td class=xl154556 align=right>0.021808</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>11/1/2016</td>
  <td class=xl154556 align=right>0.019764</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>11/2/2016</td>
  <td class=xl154556 align=right>0.018609</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>11/3/2016</td>
  <td class=xl154556 align=right>0.01617</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>11/4/2016</td>
  <td class=xl154556 align=right>0.015457</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>11/7/2016</td>
  <td class=xl154556 align=right>0.017325</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>11/8/2016</td>
  <td class=xl154556 align=right>0.020514</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>11/9/2016</td>
  <td class=xl154556 align=right>0.025313</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>11/10/2016</td>
  <td class=xl154556 align=right>0.030246</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>11/11/2016</td>
  <td class=xl154556 align=right>0.035005</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>11/14/2016</td>
  <td class=xl154556 align=right>0.037926</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>11/15/2016</td>
  <td class=xl154556 align=right>0.040985</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>11/16/2016</td>
  <td class=xl154556 align=right>0.0421</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>11/17/2016</td>
  <td class=xl154556 align=right>0.045048</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>11/18/2016</td>
  <td class=xl154556 align=right>0.048647</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>11/21/2016</td>
  <td class=xl154556 align=right>0.050855</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>11/22/2016</td>
  <td class=xl154556 align=right>0.054225</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>11/23/2016</td>
  <td class=xl154556 align=right>0.059675</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>11/25/2016</td>
  <td class=xl154556 align=right>0.063056</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>11/28/2016</td>
  <td class=xl154556 align=right>0.065385</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>11/29/2016</td>
  <td class=xl154556 align=right>0.067396</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>11/30/2016</td>
  <td class=xl154556 align=right>0.068715</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>12/1/2016</td>
  <td class=xl154556 align=right>0.067195</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>12/2/2016</td>
  <td class=xl154556 align=right>0.065036</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>12/5/2016</td>
  <td class=xl154556 align=right>0.060924</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>12/6/2016</td>
  <td class=xl154556 align=right>0.057955</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>12/7/2016</td>
  <td class=xl154556 align=right>0.053682</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>12/8/2016</td>
  <td class=xl154556 align=right>0.05172</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>12/9/2016</td>
  <td class=xl154556 align=right>0.052188</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>12/12/2016</td>
  <td class=xl154556 align=right>0.053812</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>12/13/2016</td>
  <td class=xl154556 align=right>0.055302</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>12/14/2016</td>
  <td class=xl154556 align=right>0.059984</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>12/15/2016</td>
  <td class=xl154556 align=right>0.065521</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>12/16/2016</td>
  <td class=xl154556 align=right>0.069117</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>12/19/2016</td>
  <td class=xl154556 align=right>0.07395</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>12/20/2016</td>
  <td class=xl154556 align=right>0.079027</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>12/21/2016</td>
  <td class=xl154556 align=right>0.079922</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>12/22/2016</td>
  <td class=xl154556 align=right>0.078866</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>12/23/2016</td>
  <td class=xl154556 align=right>0.077589</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>12/27/2016</td>
  <td class=xl154556 align=right>0.07534</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>12/28/2016</td>
  <td class=xl154556 align=right>0.073149</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>12/29/2016</td>
  <td class=xl154556 align=right>0.070329</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>12/30/2016</td>
  <td class=xl154556 align=right>0.066114</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>1/3/2017</td>
  <td class=xl154556 align=right>0.065532</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>1/4/2017</td>
  <td class=xl154556 align=right>0.063771</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>1/5/2017</td>
  <td class=xl154556 align=right>0.059462</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>1/6/2017</td>
  <td class=xl154556 align=right>0.058926</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>1/9/2017</td>
  <td class=xl154556 align=right>0.058652</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>1/10/2017</td>
  <td class=xl154556 align=right>0.055221</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>1/11/2017</td>
  <td class=xl154556 align=right>0.052785</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>1/12/2017</td>
  <td class=xl154556 align=right>0.051279</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>1/13/2017</td>
  <td class=xl154556 align=right>0.047492</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>1/17/2017</td>
  <td class=xl154556 align=right>0.042687</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>1/18/2017</td>
  <td class=xl154556 align=right>0.038517</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>1/19/2017</td>
  <td class=xl154556 align=right>0.036403</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>1/20/2017</td>
  <td class=xl154556 align=right>0.034359</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>1/23/2017</td>
  <td class=xl154556 align=right>0.031666</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>1/24/2017</td>
  <td class=xl154556 align=right>0.03102</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>1/25/2017</td>
  <td class=xl154556 align=right>0.030191</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>1/26/2017</td>
  <td class=xl154556 align=right>0.028369</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>1/27/2017</td>
  <td class=xl154556 align=right>0.02749</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>1/30/2017</td>
  <td class=xl154556 align=right>0.027657</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>1/31/2017</td>
  <td class=xl154556 align=right>0.024824</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>2/1/2017</td>
  <td class=xl154556 align=right>0.021491</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>2/2/2017</td>
  <td class=xl154556 align=right>0.017533</td>
 </tr>
 <tr height=20 style='height:15.0pt'>
  <td height=20 class=xl634556 align=right style='height:15.0pt'>2/3/2017</td>
  <td class=xl154556 align=right>0.012598</td>
 </tr>
 <![if supportMisalignedColumns]>
 <tr height=0 style='display:none'>
  <td width=75 style='width:56pt'></td>
  <td width=64 style='width:48pt'></td>
 </tr>
 <![endif]>
</table>

</div>

</body>

</html>

1 个答案:

答案 0 :(得分:0)

您的问题与此类似: Conditional rolling mean (moving average) on irregular time series

我喜欢数据表解决方案,您可以在其中填充缺少的日期,然后使用zoo包中的rollmean来获取移动平均值。没有样本数据集很难证明。我创建了一个假的,然后删除了一些日期以显示如何解决丢失的日期。

library(data.table)
library(zoo)

## Convert to data.table

#number of days
dateno<-as.numeric(difftime(as.Date("2017-02-03"),as.Date("2006-04-19"),units="days"))+1

DT<-data.table(ID=seq(1,dateno,by=1),
    val=rnorm(dateno),
    dates=seq(as.Date("2006-04-19"),as.Date("2017-02-03"),by=1),
    missing.dates=rbinom(n=dateno,size=1,prob=.9))

DT<-DT[missing.dates==1][,missing.dates:=NULL]


## Using related questions/response
## reference: https://stackoverflow.com/questions/21372735/conditional-rolling-mean-moving-average-on-irregular-time-series
##Missing DATES will be added in. Value will be set to NA. 
DT<-DT[DT[,.(dates=seq(min(dates),max(dates),by=1))],on="dates"]

## Run your function
DT[, Avg5day:=rollmean(val, 5, na.rm=TRUE,align="right",fill=NA)]

希望我能正确理解你的问题。

要添加每周平均值,然后使用与rollmean相同的策略计算滚动的10周平均值:

#add workweek column to group by
DT[,YYYY.WW:=paste0(year(as.Date(dates)),"-",ifelse(week(as.Date(dates))<10,"0",""),week(as.Date(dates)))]

#calculate weekly average
DT[,YYYY.WW.AVG:=mean(val,na.rm=TRUE),YYYY.WW]
weekly.DT<-unique(DT[,.(YYYY.WW,YYYY.WW.AVG)])

#calculate rolling weekly average
weekly.DT[,WW10AVG:=rollmean(YYYY.WW.AVG,k=10,na.rm=TRUE,align="right",fill=NA)]
DT[weekly.DT,on="YYYY.WW"]