0

可能重复:
R向量/数据帧中的基本滞后

试图滞后 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]

谢谢!

4

3 回答 3

2

lag()期望一个时间序列。(在 R 中,“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
于 2012-12-14T04:08:07.087 回答
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
于 2012-12-14T04:08:49.127 回答
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
于 2012-12-14T04:09:53.073 回答