【发布时间】:2020-04-27 15:27:26
【问题描述】:
如何创建一个起始值为 1 的新列,以下值是列的前一个值 (b) 与其自身的前一个值 (d) 的乘积?
这些数据只是组成,但有我的数据的结构:
> a <- rep(1:10, 3)
> b <- runif(30)
> c <- tibble(a,b)
> c
# A tibble: 30 x 2
a b
<int> <dbl>
1 1 0.945
2 2 0.280
3 3 0.464
4 4 0.245
5 5 0.917
6 6 0.913
7 7 0.144
8 8 0.481
9 9 0.873
10 10 0.754
# ... with 20 more rows
然后我尝试计算d列:
> c <- c %>%
+ group_by(a) %>%
+ mutate(d = accumulate(lag(b, k = 1), `*`, .init = 1))
它应该看起来像这样
# A tibble: 30 x 3
# Groups: a [10]
a b d
<int> <dbl> <dbl>
1 1 0.945 1 <--- b[1] * d[1] = d[2]
2 2 0.280 0.945
3 3 0.464 0.265
4 4 0.245 0.123
5 5 0.917 0.03
#...
但我却收到此错误消息。
Fehler: Column `d` must be length 3 (the group size) or one, not 4
【问题讨论】: