我正在尝试创建一个函数,以使用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
函数,那就太好了!