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
我做错了什么?
答案 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::lag
与zoo
库结合使用的另一种方式:
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
来摆脱指数。