我有这样的数据集:
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
我已经阅读了帮助页面,但我无法在旁边找到一个提示,说明系列必须是时间序列对象,这是完成的。那么我做错了什么?
答案 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)