質問
多数の行によってオフセットされたデータフレーム内の既存の列のコピーを作成しようとしています。
例えば。列 2 が列 1 の 1 オフセットのコピーである場合、
> dataframe
$column1
[1] 1 2 3 4 5
$column2
[1] 0 1 2 3 4
次のコードである程度の成功を収めました。
offset7 <- rep(0, 7)
dataframe$column1.prev7 = c(offset7, dataframe$column1[1:(length(dataframe$column1)-7)])
ただし、30 以上オフセットするとエラーが発生し始めます。私のデータは十分に長いので、オフセットが行数よりも大きいという問題にはなりません。エラーは次のとおりです。
Error in dataframe$column1[1:(length(dataframe$column1) - 30)] :
only 0's may be mixed with negative subscripts
前もって感謝します!plyr とうまく連携する高速ループの無料バージョンが望ましいでしょう。ここでの目的は、時系列データを最大 1 年までのさまざまなラグに分割し、結果をさまざまな方法で分析することです。
解決
お願いします 時系列操作には適切な時系列クラスを使用してください。人気のお気に入りは、 動物園 そして xts どちらも持っています 多くの ドキュメントの。
簡単な例として考えてみましょう
> library(xts)
> foo <- xts(100:109, order.by=Sys.Date()+0:9)
> merge(foo, l1=lag(foo,1), lm1=lag(foo,-1))
foo l1 lm1
2010-11-18 100 NA 101
2010-11-19 101 100 102
2010-11-20 102 101 103
2010-11-21 103 102 104
2010-11-22 104 103 105
2010-11-23 105 104 106
2010-11-24 106 105 107
2010-11-25 107 106 108
2010-11-26 108 107 109
2010-11-27 109 108 NA
>
ただし、手作業でやらないでください。R タグ内を検索するには、ここで「[r] xts」または「[r] Zoo」を検索してください。
所属していません StackOverflow