R 我可以用数据滞后/超前吗?表';按类别在回归公式内移动?

R 我可以用数据滞后/超前吗?表';按类别在回归公式内移动?,r,data.table,shift,R,Data.table,Shift,我目前在运行回归之前建立滞后和领先。这感觉有点笨拙(甚至与在xtset之后按类别自动发生滞后的Stata相比),我想直接在回归公式中滞后。但是,我不知道如何将by=部分data.table与其shift()函数在回归命令(如lm())中组合起来 例如: 创建一些数据(NA只需确保滞后和按类别滞后不会同时产生相同的结果…: shift()在lm()内部工作,但我无法按类别进行移位,因此结果与之前创建的滞后不同: lm(y ~ mylag, data=DT) lm(y ~ shift(dummy),

我目前在运行回归之前建立滞后和领先。这感觉有点笨拙(甚至与在xtset之后按类别自动发生滞后的Stata相比),我想直接在回归公式中滞后。但是,我不知道如何将
by=
部分
data.table
与其
shift()
函数在回归命令(如
lm()
)中组合起来

例如:

创建一些数据(NA只需确保滞后和按类别滞后不会同时产生相同的结果…:

shift()
lm()
内部工作,但我无法按类别进行移位,因此结果与之前创建的滞后不同:

lm(y ~ mylag, data=DT)
lm(y ~ shift(dummy), data=DT)

这让我回到了我的问题:在回归中如何按类别调用
shift()

什么是乏味的?如果您有多个列,则可以使用
lappy(.SD,shift)
。例如,假设您有一个包含30个时间段的数据集,并希望创建5个变量的12个滞后。当然,这可以略为简化,但看起来仍然很糟糕,数据集将有60个新变量,只使用一次。(仍然是一个很好的观点!它改进了一点)
DT[, mylag := shift(dummy, fill=0), by = id]
lm(y ~ mylag, data=DT)
lm(y ~ shift(dummy), data=DT)