可能重复:
计算中的R的移动平均
我已经写中的R的变化函数的速率,其定义为:
rateChange <- function(x) ((last(x)-first(x))/first(x))*100
它奇妙的作品在不同的日期范围,如更改为5天,10天,200天,等等。但是,我现在需要每天与应用此功能的速度。 例如,为了找出变化率连续5天一个需要在过去的6周数据的观察。
下面是在Excel中的例子,为了清楚起见,我试图重现“变化率”列:
谢谢!
可能重复:
计算中的R的移动平均
我已经写中的R的变化函数的速率,其定义为:
rateChange <- function(x) ((last(x)-first(x))/first(x))*100
它奇妙的作品在不同的日期范围,如更改为5天,10天,200天,等等。但是,我现在需要每天与应用此功能的速度。 例如,为了找出变化率连续5天一个需要在过去的6周数据的观察。
下面是在Excel中的例子,为了清楚起见,我试图重现“变化率”列:
谢谢!
我会建议使用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
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)
这是接近,但数学(结果)是不完全一样的:
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])