将列乘以r中的另一列

Bea*_*ear 1 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
Run Code Online (Sandbox Code Playgroud)

应该是这样的:

Day0  Day1  Day2    Day3
100   105  110.25  115.76
100   101  102.01  103.03
100   99   98.01   97.02 
Run Code Online (Sandbox Code Playgroud)

我相信我必须使用replaceapply在这里,但我有1列的困难.我不知道如何避免使用function它,将每列乘以前一列.

Fra*_*ank 5

试试这个:

DF[] <- Reduce(`*`, DF, accumulate = TRUE)
Run Code Online (Sandbox Code Playgroud)

这使

  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
Run Code Online (Sandbox Code Playgroud)

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


或者,正如@akrun建议的那样:

t(apply(DF, 1, cumprod))
Run Code Online (Sandbox Code Playgroud)

  • @Frank没关系.你可以把它包含在混合中. (2认同)