gpt4 book ai didi

r - dplyr:求和 n 个主要值

转载 作者:行者123 更新时间:2023-12-02 09:13:14 25 4
gpt4 key购买 nike

我有一些这样的数据:

data <- tibble(a = 1:100)

a
--
1
2
3
4
5
6
7
...

等...

有什么优雅的方法可以创建一个由 n 个主值相加的变量吗?我的意思是这样的:

data %>% mutate(b = lead(a,1) + lead(a,2) + lead(a,3) + ... + lead(a,n))

例如,在 n = 2 的情况下,我会得到:

a      b
--------------
1 2+3 = 5
2 3+4 = 7
3 4+5 = 9
4 5+6 = 11
5 6+7 = 13
6 7+8 = 15
7 8+9 = 17
...

提前致谢!

最佳答案

我们正接近于重新创建 stats::filter 函数,该函数被 dplyr 屏蔽:

stats::filter(1:10, c(rep(1,2),0), sides=1)
#Time Series:
#Start = 1
#End = 10
#Frequency = 1
# [1] NA NA 5 7 9 11 13 15 17 19

这是一个精确匹配输出的小函数:

sumnahead <- function(x,n) {
rev(stats::filter(rev(x), c(0,rep(1,n)), sides=1))
}

sumnahead(1:10,2)
#[1] 5 7 9 11 13 15 17 19 NA NA

它的速度也很快,因为它可以编译代码:

system.time(sumnahead(1:1e7,50))
# user system elapsed
# 2.28 0.22 2.53
system.time(lead_n(1:1e7,50))
# user system elapsed
# 6.02 4.07 10.13

关于r - dplyr:求和 n 个主要值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49808908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com