在R中创建滞后变量时出错

在R中创建滞后变量时出错,r,dataframe,data.table,lag,R,Dataframe,Data.table,Lag,您好,我已经创建了一个滞后变量,使用上述问题答案中的说明(上面的链接)。它说要创建滞后变量,我需要使用: library(data.table) data = data[, lag.value:=c(NA, value[-.N]), by=groups] 或者,或者: data = data[, lag.value := shift(value, 1L), keyby = groups] 以下是我从以下相关问题中得到的答案: (第二种方法可能不完全正确,因为它有点复杂,所以如果错误,请

您好,我已经创建了一个滞后变量,使用上述问题答案中的说明(上面的链接)。它说要创建滞后变量,我需要使用:

library(data.table)
 data = data[, lag.value:=c(NA, value[-.N]), by=groups]
或者,或者:

data = data[, lag.value :=  shift(value, 1L), keyby = groups]
以下是我从以下相关问题中得到的答案:

(第二种方法可能不完全正确,因为它有点复杂,所以如果错误,请纠正我)

在任何情况下,当我使用这些方法中的任何一种时,我都会得到一个错误:

Error in `[.data.frame`(data, , `:=`(lag.value, c(NA,  : 
  unused argument (by = groups)
你能解释一下我在这里做错了什么,以及我应该做些什么来避免这个错误吗

数据:


我想创建的变量是lag.value,它在组中的值滞后于1

我已经安装了data.table包,但它的版本是1.9.4,而不是1.9.5,从我对第二种方法的理解来看,这似乎是必要的。我也不确定为什么软件包没有安装最高的当前版本?您的数据是什么样子的?我认为您的
data
不属于
data.table类。您可以执行
setDT(data)
来确保。是的,我认为我的数据是data.frame。是否将其设置为data.table不会改变我使用它的方式(访问数据等)?很高兴解决了这个问题。所有的功能仍然可用,但是一些语法是不同的,比如
DF[x]
DT[x]
会做不同的事情;和
DF[,y]
vs
DT[,y]
time  value   groups  
1      3        a
2      3        a
3      4        a
4      4        a
1      1        b
2      2        b
3      5        b
4      5        b