首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >lag未按预期工作

lag未按预期工作
EN

Stack Overflow用户
提问于 2015-01-16 19:49:07
回答 3查看 10.2K关注 0票数 7

lag没有像我预期的那样工作

代码语言:javascript
复制
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

我想我会得到:

代码语言:javascript
复制
0 0 1 2 3 4 5 6 7 

代码语言:javascript
复制
1 2 3 4 5 6 7 8 0

我做错了什么?

EN

回答 3

Stack Overflow用户

发布于 2015-01-16 20:04:58

您应该使用Hmisc包中的Lag

代码语言:javascript
复制
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
票数 10
EN

Stack Overflow用户

发布于 2015-01-16 20:06:57

data.table::shift是另一个:

代码语言:javascript
复制
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

zoo库中使用base::lag的另一种方式:

代码语言:javascript
复制
library(zoo)
a <- zoo(c(0, 1, 2, 3, 4, 5, 6, 7, 8))  #convert to zoo

所以:

代码语言:javascript
复制
lag(a, 1, na.pad = TRUE)
# 1  2  3  4  5  6  7  8  9 
# 1  2  3  4  5  6  7  8 NA 

或者:

代码语言:javascript
复制
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包住它来去掉索引。

票数 3
EN

Stack Overflow用户

发布于 2015-01-16 20:16:22

实际上,

我最终选择了这个:

代码语言:javascript
复制
c(a[-1],0)

做我想做的事

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27983331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档