适用于指定范围内的功能; 变化率[副本](Apply a function to a speci

2019-08-03 15:16发布

可能重复:
计算中的R的移动平均

我已经写中的R的变化函数的速率,其定义为:

rateChange <- function(x) ((last(x)-first(x))/first(x))*100

它奇妙的作品在不同的日期范围,如更改为5天,10天,200天,等等。但是,我现在需要每天与应用此功能的速度。 例如,为了找出变化率连续5天一个需要在过去的6周数据的观察。

下面是在Excel中的例子,为了清楚起见,我试图重现“变化率”列:

谢谢!

Answer 1:

我会建议使用TTR::ROC

library(TTR)
roc <- c(18.89, 18.93, 18.55, 18.77, 18.87, 18.91)
ROC(roc, type="discrete")*100
# [1]         NA  0.2117522 -2.0073957  1.1859838  0.5327651  0.2119767


Answer 2:

x <- rnorm(5)
x
#[1] -0.48504744 -1.71843913  0.03890147 -2.11410329 -1.59765182
100*(tail(x, -1) - head(x, -1))/head(x, -1)
#[1]   254.28269  -102.26377 -5534.50754  -24.42887

如果你需要的是相同的长度,输入向量你可以只添加一个NA到这样结束

c(100*(tail(x, -1) - head(x, -1))/head(x, -1), NA)


Answer 3:

这是接近,但数学(结果)是不完全一样的:

 roc <- c(18.89, 18.93, 18.55, 18.77, 18.87, 18.91)
 sapply(seq_along(roc)[-1], function(i) 100*(roc[i] - roc[i-1])/roc[i-1])


文章来源: Apply a function to a specified range; Rate of Change [duplicate]
标签: r apply