为了账号安全,请及时绑定邮箱和手机立即绑定

R向量/数据帧中的基本滞后

R向量/数据帧中的基本滞后

开心每一天1111 2019-12-25 10:48:31
很有可能会暴露出我是R的新手,但是在SPSS中,运行时滞非常容易。显然这是用户错误,但是我缺少什么呢?x <- sample(c(1:9), 10, replace = T)y <- lag(x, 1)ds <- cbind(x, y)ds结果是:      x y [1,] 4 4 [2,] 6 6 [3,] 3 3 [4,] 4 4 [5,] 3 3 [6,] 5 5 [7,] 8 8 [8,] 9 9 [9,] 3 3[10,] 7 7我想我会看到:     x y [1,] 4  [2,] 6 4 [3,] 3 6 [4,] 4 3 [5,] 3 4 [6,] 5 3 [7,] 8 5 [8,] 9 8 [9,] 3 9[10,] 7 3任何指导将不胜感激。
查看完整描述

3 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

解决此问题的另一种方法是使用zoo软件包,该软件包具有一个滞后方法,该结果将用NA填充结果:


require(zoo)

> set.seed(123)

> x <- zoo(sample(c(1:9), 10, replace = T))

> y <- lag(x, -1, na.pad = TRUE)

> cbind(x, y)

   x  y

1  3 NA

2  8  3

3  4  8

4  8  4

5  9  8

6  1  9

7  5  1

8  9  5

9  5  9

10 5  5

结果是一个多元动物园对象(这是一个增强的矩阵),但可以通过以下方式轻松转换为data.frame


> data.frame(cbind(x, y))


查看完整回答
反对 回复 2019-12-25
?
墨色风雨

TA贡献1853条经验 获得超6个赞

我有同样的问题,但是我不想使用zoo或xts,所以我为数据帧编写了一个简单的滞后函数:


lagpad <- function(x, k) {

  if (k>0) {

    return (c(rep(NA, k), x)[1 : length(x)] );

  }

  else {

    return (c(x[(-k+1) : length(x)], rep(NA, -k)));

  }

}

这可能会滞后或滞后:


x<-1:3;

(cbind(x, lagpad(x, 1), lagpad(x,-1)))

     x      

[1,] 1 NA  2

[2,] 2  1  3

[3,] 3  2 NA


查看完整回答
反对 回复 2019-12-25
  • 3 回答
  • 0 关注
  • 620 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信