1

重複の可能性:
Rでの移動平均の計算

私はRで変化率関数を書きました。これは次のように定義されています。

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

5日、10日、200日の変化率など、さまざまな日付範囲でうまく機能します。しかし、私は今、この機能を毎日の間に適用する必要があります。たとえば、5日間の変化率を特定するには、過去6回のデータ観測が必要になります。

これはExcelでの例です。わかりやすくするために、「変更率」列を再現しようとしています。

データ

ありがとうございました!

4

3 に答える 3

6

私は使用することをお勧めし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
于 2012-12-06T19:42:20.030 に答える
4
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)
于 2012-12-06T19:23:39.077 に答える
2

これは近いですが、数学(結果)は完全に同じではありません:

 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])
于 2012-12-06T19:18:14.577 に答える