2012-12-14 77 views
0

可能重複:
Basic lag in R vector/dataframe滯後/差分變量

試圖滯後中的R可變,但它不工作。

x<-1:10 
y=lag(x,1) 
xy=cbind(x,y) 
View(xy) 

    x y 
1 1 1 
2 2 2 
3 3 3 
4 4 4 
5 5 5 
6 6 6 
7 7 7 
8 8 8 
9 9 9 
10 10 10 

我還沒有得到滯後。我究竟做錯了什麼?還有沒有使用cbind/rbind的更快的方法來結合向量/矩陣?例如

x=0:10 
y=20:30 
newxy=[x,y] 

謝謝!

+2

你可以在另一個問題中找到答案:http://stackoverflow.com/questions/3558988/basic-lag-in-r-vector-dataframe – AndreyAkinshin

回答

2

lag()需要一個時間序列。 (在R中,class「ts」是基本的時間序列類,用於表示在等時間點採樣的數據。更多信息請參見?ts。)因此,您可以將x轉換爲時間序列,如此處所示,或者使用其他答案中建議的方法之一。

x <- as.ts(1:10) 
y <- lag(x,1) 
xy <- cbind(x,y) 
xy 
#Time Series: 
#Start = 0 
#End = 10 
#Frequency = 1 
# x y 
# 0 NA 1 
# 1 1 2 
# 2 2 3 
# 3 3 4 
# 4 4 5 
# 5 5 6 
# 6 6 7 
# 7 7 8 
# 8 8 9 
# 9 9 10 
#10 10 NA 
2

對於第二部分:

newxy=matrix(c(x,y),ncol=2) 

> newxy 
     [,1] [,2] 
[1,] 0 20 
[2,] 1 21 
[3,] 2 22 
[4,] 3 23 
[5,] 4 24 
[6,] 5 25 
[7,] 6 26 
[8,] 7 27 
[9,] 8 28 
[10,] 9 29 
[11,] 10 30 
2

embed這裏是一個有用的功能,特別是如果你不想轉換爲ts對象。

x <- 1:10 
embed(x,2) 


    [,1] [,2] 
[1,] 2 1 
[2,] 3 2 
[3,] 4 3 
[4,] 5 4 
[5,] 6 5 
[6,] 7 6 
[7,] 8 7 
[8,] 9 8 
[9,] 10 9