0

私は DataFrame でいくつかの変数を遅らせようとしています (そして明示的に時系列の使用を避けています)、そして面白い結果を得ています。正確には、多数のラグを 1 つのオブジェクトにまとめようとしています。つまり、「注文」と呼ばれる列の 1 期間と 2 期間のラグです。これが私がやっていることです:

time=18:29
orders=c(76,77,78,79,72,81,79,85,93,81,72,60)

 data=data.frame(time=time,orders=orders)

 lagage<-lag(data$orders, k=-1:-2)

Error in `tsp<-`(`*tmp*`, value = p - (k/p[3L]) * c(1, 1, 0)) : 
invalid time series parameters specified
In addition: Warning messages:
1: In if (k != round(k)) { :
the condition has length > 1 and only the first element will be used
2: In (k/p[3L]) * c(1, 1, 0) :
 longer object length is not a multiple of shorter object length

これまでに何度も lag() 関数を問題なく使用してきたため、このエラーが発生する理由にかなり混乱しています。多分それは私の側の脳のおならですが、何が起こっているのかを確認したかったのです。

編集

ここでもっと明確にする必要がありました-NAによるラグの影響を受けるインデックスを埋めようとしています。上で示した遅延は、次のように、データフレームを Zoo オブジェクトに強制します。

data<-as.zoo(data)
lagage<-lag(data$orders, k=-1:-3)


  lag-1 lag-2 lag-3
2     76    NA    NA
3     77    76    NA
4     78    77    76
5     79    78    77
6     72    79    78
7     81    72    79
8     79    81    72
9     85    79    81
10    93    85    79
11    81    93    85
12    72    81    93

もちろん、新しいデータをデータ フレームに強制的に戻すことはできますが、これらの手順は避けたいと考えています。

4

2 に答える 2

2

代わりに次のことを試してください。

 sapply(-1:-2, function(k) lag(data$orders, k=k))

, simplify=FALSE属性を保持したい場合に使用したい場合があります

于 2013-07-29T14:35:23.503 に答える