2012-12-14 1 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에서는 클래스 "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

: 당신이 ts 객체로 변환하지 않으려는 특히

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, 여기에 유용한 기능입니다.

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