将列乘以r中的另一列

时间:2016-01-21 17:40:27

标签: r

我需要计算某一点的实际值,而不是那时的相对变化。我有典型的时间序列数据(%到前一个时期),需要在某个时间获得资产的实际价值。类似的东西:

Day0 Day1  Day2  Day3
100  1.05  1.05  1.05
100  1.01  1.01  1.01
100  0.99  0.99  0.99

应如下所示:

Day0  Day1  Day2    Day3
100   105  110.25  115.76
100   101  102.01  103.03
100   99   98.01   97.02 

我相信我必须在这里使用replaceapply,但我在第1栏遇到了困难。我不知道如何使用function来避免它,它将每列乘以前一列。

1 个答案:

答案 0 :(得分:5)

试试这个:

DF[] <- Reduce(`*`, DF, accumulate = TRUE)

给出了

  Day0 Day1   Day2     Day3
1  100  105 110.25 115.7625
2  100  101 102.01 103.0301
3  100   99  98.01  97.0299

这是有效的,因为data.frame是一个列列表。

或者,正如@akrun所说:

t(apply(DF, 1, cumprod))