移动平均值随时间变化

时间:2017-07-07 22:08:43

标签: r dataframe multiple-columns moving-average

我需要帮助才能获得每个ID 7天的变量E,N和Z的平均值。

数据框为290512 x 5,head如下所示:

ID  Date        E           N       Z
1   2012-03-16  676620.5    4090699 26.827
1   2012-03-16  676620.5    4090699 26.828
1   2012-03-16  676620.5    4090699 26.827
1   2012-03-16  676620.5    4090699 26.828
1   2012-03-16  676620.5    4090699 26.828
1   2012-03-16  676620.5    4090699 26.828

Statments:

  1. ID <- 1:21;
  2. 2012-03-16至2016-12-31之间的日期,没有连续性(没有NA&#39; s);
  3. ñ。 obs = E = N = Z;
  4. 每个点的#obs可以不同。
  5. 例如,如果我得到ID = 5的E,我也会在这个obsertavion上获得N和Z,但同时我不能得到ID = 12的障碍。这个数据来自土壤变形和土壤质量确定了全站的目标。

    到目前为止,我的解决方案是

    df_dm <- df %>%
    group_by(ID, Date) %>%
    summarise(E_dm = mean(E),
              N_dm = mean(N),
              Z_dm = mean(Z))
    

    获取日常工作,然后,

    m <- 7
    df_wm <- sapply(df_dm, function(x) rollapply( x, width = m, by = m, align = "left", FUN = mean))
    

    来自移动平均问题的答案。

1 个答案:

答案 0 :(得分:0)

您的示例数据只有一个日期。您想通过7天(例如,按周)的单独窗口计算平均值吗?如果是这样,您可以为每周创建一个具有唯一标识符的新列-keep class !com.yourpackage.example.class { *; } ,并使用该列进行分组,而不是Week

或者,您可能希望采用滚动平均值。查看Date包中的函数rollmean。例如:

zoo