我希望创建一个复制的现有列在一个数据框偏通过一些行。

E.g。如果column2是一个复制的column1偏1,然后

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

$column2
[1] 0 1 2 3 4

我已经取得了一些成功,与下列代码:

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

但是它开始让错误的,如果我偏了30个或更多。我的数据是足够长,这不是一个问题的偏比的行数。错误是:

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

在此先感谢!一个快速循环中的免费版本,发挥好的不会是优选的。这里的目的是打破了时间序列数据纳入各种滞后一年,然后分析结果的各种方法。

有帮助吗?

解决方案

使用一个适当的时间系列课的时间系列行动。受欢迎的美食 动物园 这两者都有 很多 文件。

作为一个简单的例子,请考虑

> 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
> 

但就是不做手。并搜索这里'[r]境'或[r]的动物园'的范围内搜索R标签。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top