使用 yoy 在数据框中创建一个新列 - R 中的更改

Creating a new column in a data frame with yoy - change in R

我想我还没有完全理解数据框的转换功能。 我想建立一个从 100 开始并通过将第一个值 (100) 乘以“1+delta”来增加值的新索引(新列)。下一个值将是刚刚计算的值增加“1+delta”等等

这是我的例子:

x = c(2000,2001,2002,2003,2004,2005,2006)   
delta = c(0.04,0.05,0.08,0.1,0.01,0.02)   
df = data.frame(x,delta)

df = transform(df, z=c(100,z[-2]*(1+df$delta[-1])))

预期的结果应该是有序的:

     x    delta        z
1 2000          NA 100.0000
2 2001  0.04000000 104.0000
3 2002  0.05000000 109.2000
4 2003  0.08000000 117.9360
5 2004  0.10000000 129.7296
6 2005  0.01000000 131.0269
7 2006  0.02000000 133.6474

我编辑了问题,这样更容易理解。

代码应该产生我示例中显示的值,但它没有。我究竟做错了什么? 我如何知道从哪里开始 counting/iterating,换句话说 [-1][-2] 或...?

非常感谢这个很棒的社区!

我的问题的解决方法很简单:

x = c(2000,2001,2002,2003,2004,2005,2006)   
delta = c(0.04,0.05,0.08,0.1,0.01,0.02)   
df = data.frame(x,delta)

delta2 = 1+delta
z = 100*cumprod(delta2)
z

我使用函数 cumprod(x) 来 return 所需的 z 向量。当然,也可能有更好的写法。