我正在处理财务数据的数据框,在这里我要考虑行之间的差异以及行之间的“变化”。区别在于,此任务很容易,只需:
apply(df, MARGIN=2, FUN=function(x) diff(x))
我想要更改而不是更改时出现问题。也就是说,在数据帧的每一列中,我要迭代获取该列的下一个元素除以前一个元素,然后减去一个。我这样做的快速而肮脏的方法如下:
apply(df, MARGIN=2, FUN=function(x) x[2:length(x)]/x[1:length(x)-1]-1)
但是我想知道是否有一个函数可以为我做到这一点?
EDIT:可复制,应要求提供:
数据
上面我自己的代码片段的输出(也是预期的:):>
我正在处理财务数据的数据框,在这里我要考虑行之间的差异以及行之间的“变化”。区别在于,此任务很容易,只需:apply(df,MARGIN = 2,...
我不知道基本的R函数能做到这一点,但是外部软件包中的lag
/ lead
函数不同。例如,您可以像这样使用dplyr
:
[这是shift
中的data.table
的选项
以下是几种方法。第一个返回数据帧,第二个返回矩阵,最后一个返回动物园对象。前两个不使用任何软件包。
使用对数转换exp(diff(log(x)))-1)
: