【发布时间】:2015-04-10 12:57:43
【问题描述】:
我在处理 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)
它给了我以下输出:
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
但我希望 y 中的第一个值是 50.8,依此类推。换句话说,我想得到一个负滞后。没看懂,怎么办?
我的问题与这个问题非常相似,但是我无法解决它。我想我还是不明白解决方案...
【问题讨论】:
-
你能输入你的 y 向量吗?
-
另一个选择当然是
y <- c(y[-1], NA)。 -
什么是dput? @jbaums 哇,这真的是解决我问题的简单方法!太感谢了! :)
-
作为参考,
y[-1]删除了y的第一个元素,c将其参数组合成一个向量。此外,dput返回对象的结构(例如dput(df)),将来提供此结构将帮助我们重现您的问题 - 请参阅?dput。 -
好的,完美!非常感谢。如果我想保留第一个元素(不是 NA 值),如何继续?向量的长度可能会有问题...?
标签: r time-series lag lead