在范围内使用dplyr的超前和滞后

时间:2019-03-28 15:51:57

标签: r dplyr lag lead

我正在尝试创建一个函数,以使用tidyverse的语法为每一行计算data.frame中最后n行的平均值。因此,我看到的方式是使用lead,但动态地使用n值。像df %>% mutate(mean_5 = mean_last(value, 5)之类的东西,其中每一行的值都是其自身值和最后4个值的平均值。

n=3情况下,手动是这样的:

df %>% mutate(av3 = (y + lead(y, 1) + lead(y, 2))/3)

我尝试过使用mean(lead(value, n=1:3)),但是它也不起作用。

示例:

df <- data.frame(x = 1:6, y = c(10, 4, 8, 6, 5, 1))
df %>% mutate(av3 = (y + lead(y, 1) + lead(y, 2))/3)

将使用新的df列返回av3,其值为c(7.2, 6.0, 6.3, 4.0, NA, NA)

我希望获得该输出,但无需输入n-1乘以lead函数即可自动得到。就像new_mean = mean(lead(value, 1:10))

最后,如果它允许您使用group_by函数,那就太好了!

0 个答案:

没有答案