【发布时间】:2020-03-30 11:30:53
【问题描述】:
我有一个如下所示的数据框:
structure(list(week = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
freq = c(0, 4.34, 1.24, 0, 5.26, 0, 7.12, 3.70, 0, 0),
event = c(0, 0, 0, 0, 0, 0, 1, 0, 0, 0)),
row.names = c(NA, -10L),
class = c("tbl_df", "tbl", "data.frame"))
我需要做的是创建一个新列,对应于 event=1,计算前几周 -2 到 -4 之间窗口的频率平均值,由变量 week 标识。 例如,由于第 7 周的 event=1,我想平均第 2、3、4 和 5 周的频率。每次 event 等于 1 时都必须重复此操作。该平均值应在新列中报告在 event=1 的行中。
同样,我需要生成另一列,其平均值为 window -1 ; +2 相对于 event=1,所以在这种情况下是第 6 周到第 9 周。
最终的结果应该是这样的:
week freq event mean1 mean2
1 0 0 NA NA
2 4.34 0 NA NA
...
7 7.12 1 2.71 2.705
...
如果您能帮我解决这个问题,我将不胜感激,我已经阅读了几个类似的主题,但我找不到解决这个特定问题的方法。
【问题讨论】:
标签: r dataframe moving-average