R创建列的副本,其中新列偏移某个固定量

psa*_*sen 4 r xts

我想在数据框中创建一个现有列的副本,该副本被多个行偏移.

例如,如果column2是column1的副本,则偏移1,则

> dataframe
$column1
[1] 1 2 3 4 5

$column2
[1] 0 1 2 3 4
Run Code Online (Sandbox Code Playgroud)

我使用以下代码取得了一些成功:

offset7 <- rep(0, 7)
dataframe$column1.prev7 = c(offset7, dataframe$column1[1:(length(dataframe$column1)-7)])
Run Code Online (Sandbox Code Playgroud)

但是,如果我偏移30或更多,它就会开始出错.我的数据足够长,这不会成为偏移量大于行数的问题.错误是:

Error in dataframe$column1[1:(length(dataframe$column1) - 30)] : 
  only 0's may be mixed with negative subscripts
Run Code Online (Sandbox Code Playgroud)

提前致谢!一个与plyr配合使用的快速循环免费版本将是首选.这里的目的是将时间序列数据分解为长达一年的各种滞后,然后以各种方式分析结果.

Dir*_*tel 9

请使用适当的时间序列类进行时间序列操作.最受欢迎的是动物园和xts,它们都有很多文档.

举个简单的例子,考虑一下

> library(xts)
> foo <- xts(100:109, order.by=Sys.Date()+0:9)
> merge(foo,  l1=lag(foo,1), lm1=lag(foo,-1))
           foo  l1 lm1
2010-11-18 100  NA 101
2010-11-19 101 100 102
2010-11-20 102 101 103
2010-11-21 103 102 104
2010-11-22 104 103 105
2010-11-23 105 104 106
2010-11-24 106 105 107
2010-11-25 107 106 108
2010-11-26 108 107 109
2010-11-27 109 108  NA
> 
Run Code Online (Sandbox Code Playgroud)

但是不要手工做.并在此搜索'[r] xts'或[r] zoo'以在R标签内搜索.