lag()总是只落后一个时期

时间:2015-08-12 12:11:21

标签: r

我有这样的数据集:

height: 100%;

现在我想将数据集的b系列广告添加到数据集中。但是,我挣扎,因为无论我为data <- ts(data.frame(a=c(104.8587, 104.5483, 104.0210, 105.7185,104.9054), b=c(95.4, 95.9, 95.6, 95.5, 95.8)), start=c(2007,1), frequency=12) > data a b Jan 2007 104.86 95.4 Feb 2007 104.55 95.9 Mar 2007 104.02 95.6 Apr 2007 105.72 95.5 May 2007 104.91 95.8 投入什么价值,它都会显示相同的结果。

k

我已经阅读了帮助页面,但我无法在旁边找到一个提示,说明系列必须是时间序列对象,这是完成的。那么我做错了什么?

2 个答案:

答案 0 :(得分:2)

如果你打开一个新的R会话,它应该可以工作。

这可能是由于加载了dplyr或其他包,并使用lag而不是基本滞后造成的。 dplyr延迟使用n而不是k,解释了问题:

#base lag

stats::lag(data[,2], k=3)

      Jan  Feb Mar Apr May Jun Jul Aug Sep  Oct  Nov  Dec
2006                                       95.4 95.9 95.6
2007 95.5 95.8  

#dplyr lag

dplyr::lag(data[,2], k=3)
      Jan  Feb  Mar  Apr  May
2007   NA 95.4 95.9 95.6 95.5

#correct dplyr lag

dplyr::lag(data[,2], n=3)
      Jan  Feb  Mar  Apr  May
2007   NA   NA   NA 95.4 95.9

答案 1 :(得分:0)

也许你应该试试dplyr

library(dplyr)
data <- ts(data.frame(a=c(104.8587, 104.5483, 104.0210, 105.7185,104.9054), 
       b=c(95.4, 95.9, 95.6, 95.5, 95.8)), start=c(2007,1), frequency=12)
data.frame(data) %>% mutate(Lag = lag(b, n = 2))

你也可以这样做:

dplyr::lag(data[,'b'], n = 2)