R:是否有一个等价的diff(x)用于除法?

问题描述 投票:3回答:4

我正在处理财务数据的数据框,在这里我要考虑行之间的差异以及行之间的“变化”。区别在于,此任务很容易,只需:

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:可复制,应要求提供:

数据

data

上面我自己的代码片段的输出(也是预期的:):>

output

我正在处理财务数据的数据框,在这里我要考虑行之间的差异以及行之间的“变化”。区别在于,此任务很容易,只需:apply(df,MARGIN = 2,...

r diff
4个回答
3
投票

我不知道基本的R函数能做到这一点,但是外部软件包中的lag / lead函数不同。例如,您可以像这样使用dplyr


3
投票

[这是shift中的data.table的选项


2
投票

以下是几种方法。第一个返回数据帧,第二个返回矩阵,最后一个返回动物园对象。前两个不使用任何软件包。


0
投票

使用对数转换exp(diff(log(x)))-1)

© www.soinside.com 2019 - 2024. All rights reserved.