滞后于data.table R

目前,我有一个实用功能,该功能lagsdata.table的组。 功能很简单:

panel_lag <- function(var, k) {
  if (k > 0) {
    # Bring past values forward k times
    return(c(rep(NA, k), head(var, -k)))
  } else {
    # Bring future values backward
    return(c(tail(var, k), rep(NA, -k)))
  }
}

然后我可以从data.table调用它:

x = data.table(a=1:10, 
               dte=sample(seq.Date(from=as.Date("2012-01-20"),
                                   to=as.Date("2012-01-30"), by=1),
                          10))
x[, L1_a:=panel_lag(a, 1)]  # This won't work correctly as `x` isn't keyed by date
setkey(x, dte)
x[, L1_a:=panel_lag(a, 1)]  # This will

这就要求我检查里面panel_lag是否x键连接。 有没有更好的方法来做滞后? 这些表格往往很大,所以它们应该真的被锁定。 我只是在我滞后之前做setkey 。 我想确保我不会忘记关键。 所以我想知道是否有一个标准的方式,人们这样做。


如果你想确保你按照其他列的order ,你可以使用order函数:

x[order(dte),L1_a:=panel_lag(a,1)]

虽然如果你按照日期顺序做了很多事情,那么以这种方式键入它是有意义的。

链接地址: http://www.djcxy.com/p/68395.html

上一篇: lagging in data.table R

下一篇: How do I validate a primefaces tree <p:tree>