31

R に複数のベクトルを持つ時系列オブジェクトがあります。各ベクトルの各時点での期間ごとのパーセンテージ変化を計算したいと思います (t = 1 を保存すると、明らかに NA になります)。

> data <- ts(data.frame(x1=c(1:10), x2=c(11:20), x3=c(21:30)), start = c(2010,3), frequency = 4)
> data
        x1 x2 x3
2010 Q3  1 11 21
2010 Q4  2 12 22
2011 Q1  3 13 23
2011 Q2  4 14 24
2011 Q3  5 15 25
2011 Q4  6 16 26
2012 Q1  7 17 27
2012 Q2  8 18 28
2012 Q3  9 19 29
2012 Q4 10 20 30
4

2 に答える 2

56

これを試して:

R> data/stats::lag(data,-1) - 1
         data.x1   data.x2   data.x3
2010 Q4 1.000000 0.0909091 0.0476190
2011 Q1 0.500000 0.0833333 0.0454545
2011 Q2 0.333333 0.0769231 0.0434783
2011 Q3 0.250000 0.0714286 0.0416667
2011 Q4 0.200000 0.0666667 0.0400000
2012 Q1 0.166667 0.0625000 0.0384615
2012 Q2 0.142857 0.0588235 0.0370370
2012 Q3 0.125000 0.0555556 0.0357143
2012 Q4 0.111111 0.0526316 0.0344828
R> 
于 2013-01-30T22:07:12.657 に答える
19

このようなもの?

> diff(data)/data[-nrow(data),] * 100
               x1       x2       x3
2010 Q4 100.00000 9.090909 4.761905
2011 Q1  50.00000 8.333333 4.545455
2011 Q2  33.33333 7.692308 4.347826
2011 Q3  25.00000 7.142857 4.166667
2011 Q4  20.00000 6.666667 4.000000
2012 Q1  16.66667 6.250000 3.846154
2012 Q2  14.28571 5.882353 3.703704
2012 Q3  12.50000 5.555556 3.571429
2012 Q4  11.11111 5.263158 3.448276
于 2013-01-30T22:08:45.923 に答える