0

私はRを初めて使用し、SASから移動しました。
IDごとに24か月の時系列断面データがあります。スナップショットのような

ID Time Var  
1 201201 2.5  
1 201202 3.2  
1 201203 4.1  
1 201204 3.2  
1 201205 4.1  
2 201201 1.8  
2 201202 5.6  
2 201203 4.5  
2 201204 9.2  
2 201205 8.1   

ここで、Var1、Var2、var3、var4、および var5 を 5 つのラグで作成する必要があります。ここで、var1 は 1 でラグされ、var 2 は 2 でラグされます。DataCombine ライブラリの 'Slide' 関数でこれを行うことができます仕事ですが、R 2.15.3以降をインストールできず、Slideは> = 2.15.3用です。

この問題を解決するのを手伝ってくれませんか? SAS では、Proc Panel を使用してこれを行うことができましたが、R で行う方法がわかりません。

4

2 に答える 2

1

多分あなたは探していembedますか?

# copy sample data to clipboard
df <- read.table(text=readClipboard(), header=TRUE)
embed(df$Var, 5)
#      [,1] [,2] [,3] [,4] [,5]
# [1,]  4.1  3.2  4.1  3.2  2.5
# [2,]  1.8  4.1  3.2  4.1  3.2
# [3,]  5.6  1.8  4.1  3.2  4.1
# [4,]  4.5  5.6  1.8  4.1  3.2
# [5,]  9.2  4.5  5.6  1.8  4.1
# [6,]  8.1  9.2  4.5  5.6  1.8
于 2013-11-06T16:12:21.403 に答える
0

各 ID 内でラグを発生させたい場合は、次の方法を試してください。

library(plyr)
library(zoo)
df2 <- ddply(.data = df, .variables = .(ID), function(x){
  lag(zoo(x$Var), k = 0:4)
})
df2
#    ID lag0 lag1 lag2 lag3 lag4
# 1   1  2.5  3.2  4.1  3.2  4.1
# 2   1  3.2  4.1  3.2  4.1   NA
# 3   1  4.1  3.2  4.1   NA   NA
# 4   1  3.2  4.1   NA   NA   NA
# 5   1  4.1   NA   NA   NA   NA
# 6   2  1.8  5.6  4.5  9.2  8.1
# 7   2  5.6  4.5  9.2  8.1   NA
# 8   2  4.5  9.2  8.1   NA   NA
# 9   2  9.2  8.1   NA   NA   NA
# 10  2  8.1   NA   NA   NA   NA
于 2013-11-06T21:07:27.410 に答える