0

時系列 T(1)、T(2)、T(3)、T(4)...Tn があり、さらに 2 つの時間依存パラメータ P(1)、P2(2)、P(3) があります。 )... および R(1),R(2),R(3)... したがって、データは次のようになります

T(1) P(1) R(1)
T(2) P(2) R(2)
T(3) P(3) R(3)
T(4) P(4) R(4)
T(5) P(5) R(5)
T(6) P(6) R(6)
T(7) P(7) R(7)
T(8) P(8) R(8)
...

I want to reshape the data as follows: 
T(1) T(2) T(3) P(1) P(2) P(3) R(1) R(2) R(3) T(4)
T(2) T(3) T(4) P(2) P(3) P(4) R(2) R(3) R(4) T(5)
T(3) T(4) T(5) P(3) P(4) P(5) R(3) R(4) R(5) T(6)
…

その特定の例では、最後の列がモデル ターゲットで、最初の 9 列が予測変数です。T、P、R の 3 つの前の時点を使用して T を予測しようとしています。

Rでこれを行うにはどうすればよいですか?私は R が初めてで、reshape パッケージを操作するのに本当に苦労していますか?

価値があるのは、実際には 2 ではなく 10 の異なる予測子があることです。どうもありがとう!

4

1 に答える 1

1

これは、zoo のlag関数で実行できます。またmixedsort、gtools から使用します。

library(zoo)
library(gtools) ##
DF <- data.frame(T = 1:10, P = 11:20, R = 21:30) # test data

z <- zoo(DF)
zL <- cbind(lag(z, 0:2), Y = lag(z$T, 3, na.pad = TRUE))
zL <- na.omit(zL)

# reorder columns
names(zL) <- sub("T", "A", names(zL)) ##
zL <- zL[, mixedsort(names(zL))] ##
names(zL) <- sub("A", "T", names(zL)) ##

mL <- coredata(zL) # matrix

与える:

> mL
     T.lag0 T.lag1 T.lag2 P.lag0 P.lag1 P.lag2 R.lag0 R.lag1 R.lag2  Y
[1,]      1      2      3     11     12     13     21     22     23  4
[2,]      2      3      4     12     13     14     22     23     24  5
[3,]      3      4      5     13     14     15     23     24     25  6
[4,]      4      5      6     14     15     16     24     25     26  7
[5,]      5      6      7     15     16     17     25     26     27  8
[6,]      6      7      8     16     17     18     26     27     28  9
[7,]      7      8      9     17     18     19     27     28     29 10

の列の順序がzL重要でない場合は、 で終わる行を##省略できます。

于 2014-07-12T05:51:01.553 に答える