我需要计算某一点的实际值,而不是那时的相对变化.我有典型的时间序列数据(%到前一个时期),需要在某个时间获得资产的实际价值.就像是:
Run Code Online (Sandbox Code Playgroud)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
我相信我必须使用replace
与apply
在这里,但我有1列的困难.我不知道如何避免使用function
它,将每列乘以前一列.
试试这个:
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)