下面是一个使用
rollapply
函数来自
zoo
包裹。我通过移除
length
(这基本上使函数不必要,但我将使用它作为参考),因为我通过
滚动应用
,即
myfunc <- function(var1, param1, var2, param2) {
c(var1, var2, param1, param2)
}
library(zoo)
library(tidyverse)
d %>%
mutate(newvar1 = rollapply(var1, width = 3, FUN = length, partial = TRUE),
newvar2 = rollapply(var2, width = 3, FUN = length, partial = TRUE)) %>%
rowwise() %>%
mutate(res = list(myfunc(newvar1, newvar2, param1, param2)))
#or mutate(res = list(c(newvar1, ...)))
这给了,
# A tibble: 12 x 8
date var1 var2 param1 param2 newvar1 newvar2 res
<date> <dbl> <dbl> <dbl> <dbl> <int> <int> <list>
1 2015-07-01 1 3 1 11 2 2 <dbl [4]>
2 2015-07-02 1.09 3.27 2 12 3 3 <dbl [4]>
3 2015-07-03 1.18 3.55 3 13 3 3 <dbl [4]>
4 2015-07-04 1.27 3.82 1 11 3 3 <dbl [4]>
5 2015-07-05 1.36 4.09 2 12 3 3 <dbl [4]>
6 2015-07-06 1.45 4.36 3 13 3 3 <dbl [4]>
7 2015-07-07 1.55 4.64 1 11 3 3 <dbl [4]>
8 2015-07-08 1.64 4.91 2 12 3 3 <dbl [4]>
9 2015-07-09 1.73 5.18 3 13 3 3 <dbl [4]>
10 2015-07-10 1.82 5.45 1 11 3 3 <dbl [4]>
11 2015-07-11 1.91 5.73 2 12 3 3 <dbl [4]>
12 2015-07-12 2 6 3 13 2 2 <dbl [4]>
第三排在哪里?
d2$res[3]
#[[1]]
#[1] 3 3 3 13
注:
您可以添加
select
在管道末端和移除
newvar*
柱