E.G。我们有一个数据框
df <- data.frame(a=1:5, b=4:8)
我需要为上一行的计算结果乘以a + b的总和。在Excel中,这应该像C2 =(A2 + B2)* C1 请帮助
答案 0 :(得分:0)
有两种解释,一种是
的累积积累。C3 = (A2+B2)*C2 = (A2+B2)*(A1+A1)* ...
或一个简单的滞后产品:
C1 = (A1+B1)
C2 = (A2+B2)*(A1+B1)
C3 = (A3+B3)*(A2+B1)
对于1),您可以简单地使用累积乘积:
df <- data.frame(a=1:5, b=4:8)
df$C <- with(df, a+b)
df$C <- with(df, cumprod(C))
df
a b C
1 1 4 5
2 2 5 35
3 3 6 315
4 4 7 3465
5 5 8 45045
对于2),您将结果与结果的偏移向量相乘:
df <- data.frame(a=1:5, b=4:8)
df$C <- with(df, a+b)
df$C <- with(df, C*c(1,C[-length(C)]))
df
a b C
1 1 4 5
2 2 5 35
3 3 6 63
4 4 7 99
5 5 8 143