在R中的多个时间段内滞后

在R中的多个时间段内滞后,r,dataframe,time-series,R,Dataframe,Time Series,我试图在数据帧中延迟一些变量(并且明确避免使用时间序列),得到了一个有趣的结果。准确地说,我正试图将许多滞后组合成一个对象,即称为“订单”列的1周期和2周期滞后 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*`,

我试图在数据帧中延迟一些变量(并且明确避免使用时间序列),得到了一个有趣的结果。准确地说,我正试图将许多滞后组合成一个对象,即称为“订单”列的1周期和2周期滞后

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
time=18:29
订单=c(76,77,78,79,72,81,79,85,93,81,72,60)
数据=数据.frame(时间=时间,订单=订单)

滞后请尝试以下方法:

 sapply(-1:-2, function(k) lag(data$orders, k=k))

如果要保留属性,可能需要使用
,simplify=FALSE
,请尝试以下操作:

 sapply(-1:-2, function(k) lag(data$orders, k=k))

您可能希望使用
,simplify=FALSE
如果您希望保留基于上一个答案的属性,请尝试以下操作:

foo <- function(k) c(rep(NA, abs(k)), lag(data$orders, k=k)[abs(k):length(data$orders)])
sapply(-1:-2, foo)

foo根据前面的答案,尝试以下方法:

foo <- function(k) c(rep(NA, abs(k)), lag(data$orders, k=k)[abs(k):length(data$orders)])
sapply(-1:-2, foo)

foo据我所知,
lag
k
参数只接受一个整数。您应该知道
lag
将返回一个时间序列对象,因此如果您明确尝试避免它(不确定为什么?),这可能不是最好的选择。另外,你确定你想要
k
为负值吗?@RicardoSaporta:我确定他们想要
k
为负值
lag
使用了一种非传统的约定,即
k
的正值意味着在时间上滞后于该值。@JoshuaUlrich,很高兴知道,谢谢你,据我所知,
lag
k
参数只接受一个整数。你应该知道
lag
将返回一个时间序列对象,因此,如果你明确地试图避免它(不确定为什么?),那可能不是最好的选择。另外,你确定你想要
k
为负值吗?@RicardoSaporta:我确定他们想要
k
为负值
lag
使用了一种非传统的约定,即
k
的正值意味着在时间上滞后于值的前进。@JoshuaUlrich,很高兴知道,谢谢我尝试了你的代码,但sapply函数没有吐出滞后矩阵——它只是重复现有的
数据$orders
列。@user1884063,因此,我建议将simplify设置为false并保留属性。还不完全清楚您期望的输出是什么。如果您可以编辑您的问题以包含一个示例,那将很有帮助。我尝试了您的代码,但sapply函数并没有吐出一个滞后矩阵——它只是重复现有的
数据$orders
列。@user1884063,因此我对将simplify设置为false并保留属性发表了评论。还不完全清楚您期望的输出是什么。如果你可以编辑你的问题,包括一个例子,这将是有益的谢谢。正是我想要的。谢谢。这正是我要找的。