我需要计算某一点的实际值,而不是那时的相对变化。我有典型的时间序列数据(%到前一个时期),需要在某个时间获得资产的实际价值。类似的东西:
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
我相信我必须在这里使用replace
和apply
,但我在第1栏遇到了困难。我不知道如何使用function
来避免它,它将每列乘以前一列。
答案 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))