R矢量/数据帧滞后的相反功能是什么?

Gil*_*syn 8 r time-series lag lead

我在处理R中的时间序列时遇到问题

#--------------read data

wb = loadWorkbook("Countries_Europe_Prices.xlsx") 
df = readWorksheet(wb, sheet="Sheet2")

x <- df$Year
y <- df$Index1

y <- lag(y, 1, na.pad = TRUE)
cbind(x, y)
Run Code Online (Sandbox Code Playgroud)

它给了我以下输出:

        x     y
 [1,] 1974    NA
 [2,] 1975  50.8
 [3,] 1976  51.9
 [4,] 1977  54.8
 [5,] 1978  58.8
 [6,] 1979  64.0
 [7,] 1980  68.8
 [8,] 1981  73.6
 [9,] 1982  74.3
[10,] 1983  74.5
[11,] 1984  72.9
[12,] 1985  72.1
[13,] 1986  72.3
[14,] 1987  71.7
[15,] 1988  72.9
[16,] 1989  75.3
[17,] 1990  81.2
[18,] 1991  84.3
[19,] 1992  87.2
[20,] 1993  90.1
Run Code Online (Sandbox Code Playgroud)

但我希望y中的第一个值为50.8,依此类推.换句话说,我希望得到负滞后.我不明白,我该怎么办?

我的问题与这个问题非常相似,但是我无法解决它.我想我仍然不明白解决方案......

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

age*_*nis 10

内置的"引导"功能怎么样?(来自dplyr包)它不完全是Ahmed的功能吗?

cbind(x, lead(y, 1))
Run Code Online (Sandbox Code Playgroud)

如果你想在同一个函数中计算正滞后或负滞后,我建议他''shift'函数的"更短"版本:

shift = function(x, lag) {
  require(dplyr)
  switch(sign(lag)/2+1.5, lead(x, abs(lag)), lag(x, abs(lag)))
}
Run Code Online (Sandbox Code Playgroud)

它的作用是创造2个案例,其中一个案例滞后于另一个案例,并根据滞后的符号选择一个案例(+1.5是将{-1,+ 1}转换为{1,2替代).