滞后不按预期工作

时间:2015-01-16 11:49:07

标签: r

lag无法正常工作

a<-c(0,1,2,3,4,5,6,7,8)
a
## [1] 0 1 2 3 4 5 6 7 8
lag(a,k=1)
## [1] 0 1 2 3 4 5 6 7 8
## attr(,"tsp")
## [1] 0 8 1

我以为我会得到:

0 0 1 2 3 4 5 6 7 

1 2 3 4 5 6 7 8 0

我做错了什么?

3 个答案:

答案 0 :(得分:7)

您应该使用Lag包中的Hmisc

library(Hmisc)
Lag(c(0,1,2,3,4,5,6,7,8), shift = 1)
# [1] NA  0  1  2  3  4  5  6  7

答案 1 :(得分:2)

实际上,

我最终选择了这个:

c(a[-1],0)

我想要的是什么

答案 2 :(得分:1)

data.table::shift是另一个:

library(data.table)
a <- c(0, 1, 2, 3, 4, 5, 6, 7, 8)
shift(a)
#[1] NA  0  1  2  3  4  5  6  7

base::lagzoo库结合使用的另一种方式:

library(zoo)
a <- zoo(c(0, 1, 2, 3, 4, 5, 6, 7, 8))  #convert to zoo

所以:

lag(a, 1, na.pad = TRUE)
# 1  2  3  4  5  6  7  8  9 
# 1  2  3  4  5  6  7  8 NA 

或者:

lag(a, -1, na.pad = TRUE)
# 1  2  3  4  5  6  7  8  9 
#NA  0  1  2  3  4  5  6  7 

你可以在它周围包裹一个as.vector来摆脱指数。