使用dplyr对两个变量进行递归求和
我有两列带有值 a 和 b。我想添加第三列c,即(在第i行)b的0到i的总和加上c的0到(i-1)的总和,乘以a,即
c_i = (sum_i (b) + sum_(i-1) (c) ) * a_i
我试过
data %>%
mutate(
c = a * (cumsum(b) + lag(cumsum(c), default = 0))
)
但是这不起作用,因为我只是根据目前不存在的 c 值创建 c :
Error: Problem with `mutate()` input `c`. x object 'c' not found
以前我使用 for 循环处理此类问题。不过,我习惯了dplyr,总有办法。但是,我不明白。
我很感激任何帮助!
编辑:在以前的版本中我是不准确的,因为 a 也是一个向量,而不是一个常数。我在公式里改了
所需的输出:
row 1: 0.5 * (7 + 0 ) =3.5
row 2: 0.3 * (7+1 + 3.5) = 3.45
row 3: 1.0 * (7+1+9 + 3.5+3.45) = 23.95
| a | b | c |
|---|---|---|
|0.5|7|3.5|
|0.3|1|3.45|
|1|9|23.95|
|0.2|10|...|