首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的多时段滞后

R中的多时段滞后
EN

Stack Overflow用户
提问于 2013-07-29 14:24:05
回答 2查看 1.5K关注 0票数 0

我试图在DataFrame中滞后一些变量(并且明确地避免使用时间序列),并且得到了一个有趣的结果。准确地说,我正试图将许多滞后组合成一个对象,即名为“orders”的列的1和2个周期的滞后。我正在做的事情是:

代码语言:javascript
复制
time=18:29
orders=c(76,77,78,79,72,81,79,85,93,81,72,60)

 data=data.frame(time=time,orders=orders)

 lagage<-lag(data$orders, k=-1:-2)

Error in `tsp<-`(`*tmp*`, value = p - (k/p[3L]) * c(1, 1, 0)) : 
invalid time series parameters specified
In addition: Warning messages:
1: In if (k != round(k)) { :
the condition has length > 1 and only the first element will be used
2: In (k/p[3L]) * c(1, 1, 0) :
 longer object length is not a multiple of shorter object length

我对为什么会出现这个错误感到非常困惑,因为我以前使用了很多次延迟()函数,没有任何问题。也许这是我的大脑放屁,但我想和你们核实一下到底发生了什么。

编辑

这里应该更清楚--我想要填充受NAs滞后影响的指数。我在上面展示的那个滞后的东西是我把数据收集到动物园里的,就像这样:

代码语言:javascript
复制
data<-as.zoo(data)
lagage<-lag(data$orders, k=-1:-3)


  lag-1 lag-2 lag-3
2     76    NA    NA
3     77    76    NA
4     78    77    76
5     79    78    77
6     72    79    78
7     81    72    79
8     79    81    72
9     85    79    81
10    93    85    79
11    81    93    85
12    72    81    93

当然,我可以将新数据重新强制返回到数据框架中,但希望避免这些步骤。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-29 16:27:41

在前面回答的基础上,尝试如下:

代码语言:javascript
复制
foo <- function(k) c(rep(NA, abs(k)), lag(data$orders, k=k)[abs(k):length(data$orders)])
sapply(-1:-2, foo)

向量的lag将返回相同长度的向量,当将它们组合在数据帧或矩阵中时,只会得到相同的序列。它不使用NA元素,在末尾放置元素,这是在数据帧或矩阵中滞后时您想要的。

票数 2
EN

Stack Overflow用户

发布于 2013-07-29 14:35:23

相反,请尝试以下几点:

代码语言:javascript
复制
 sapply(-1:-2, function(k) lag(data$orders, k=k))

如果要保留属性,则可能需要使用, simplify=FALSE

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

https://stackoverflow.com/questions/17926561

复制
相关文章

相似问题

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