【问题标题】:Lagging in a data.table in R which is time series panel data滞后于 R 中的 data.table,这是时间序列面板数据
【发布时间】:2014-07-01 20:56:24
【问题描述】:

我试图使用滞后和数据表符号来滞后变量,以便它最快。 这就是我试图做到的方式,

head(DT)
setkey(DT,code,year)

输出是

代码年 pt_N_1y ws_country close is_msci 1:130104 2003 0 以色列 0 0 2:130104 2004 0 以色列 0 0 3:130104 2005 0 以色列 0 0 4: 130104 2006 0 以色列 0 0 5:130104 2007 0 以色列 0 0 6:130104 2008 0 以色列 0 0
DT[,L1_is_msci:=.SD[lag(is_msci,1)],by=code]

这会给出 50 个警告并给出所有 NA.SD 不应该通过“代码”对数据进行子集化并应用函数lag(is_msci, 1)。 理想情况下,我希望使用 1 行函数来处理滞后问题,并希望使用 base 函数和数据表表示法,因为它在处理大量数据集而不安装许多软件包时是最佳的。是否可以?

我想要达到的是

代码年 pt_N_1y ws_country close is_msci L1_is_msci 1: 130104 2003 0 以色列 0 0 NA 2:130104 2004 0 以色列 0 0 0 3:130104 2005 0 以色列 0 0 0 4:130104 2006 0 以色列 0 0 0 5:130104 2007 0 以色列 0 0 0 6:130104 2008 0 以色列 0 0 0

【问题讨论】:

  • 你想要.SD[,lag(is_msci,1)]吗?
  • 不,这不会滞后系列,我希望 NA 在没有先前观察的情况下出现在第一个滞后。这是由小组完成的。
  • DT[, L1_is_msci := lag(is_msci, 1), by = code]?
  • 不,滞后给缺失的变量一个 0,我想要一个 NA。我该怎么做?
  • @Arun,我已经更新了这个问题,当我按照 eddi 要求我做的事情时,它只是产生了与 is_msci 相同的列

标签: r data.table


【解决方案1】:

以后,请提供reproducible example - 我们可以从中复制/粘贴代码以获取数据。

我不确定你在为lag 使用哪个函数 - 你没有显示它。基本函数lag(来自stats)似乎做了一些不同的事情。如果你正在使用它,难怪你的结果不是你所期望的。测试您正在使用的功能非常容易:

# base function from package stats
lag(1:5, k=1L)
# [1] 1 2 3 4 5
# attr(,"tsp")
# [1] 0 4 1

显然不是我们想要的。所以,让我们编写自己的函数:

lag <- function(x, n)
    if (n == 0) x else c(rep.int(NA, n), head(x, -n))

# test it
lag(1:5, 0)
# [1] 1 2 3 4 5

lag(1:5, 2)
# [1] NA NA  1  2  3

现在,你申请@eddi 的代码:

DT[, L1_is_msci := lag(is_msci, 1L), by = code]
#      code year pt_N_1y ws_country close is_msci L1_is_msci
# 1: 130104 2003       0     ISRAEL     0       0         NA
# 2: 130104 2004       0     ISRAEL     0       0          0
# 3: 130104 2005       0     ISRAEL     0       0          0
# 4: 130104 2006       0     ISRAEL     0       0          0
# 5: 130104 2007       0     ISRAEL     0       0          0
# 6: 130104 2008       0     ISRAEL     0       0          0

HTH

【讨论】:

    猜你喜欢
    • 2019-07-23
    • 2012-02-13
    • 2012-10-12
    • 2017-12-08
    • 2021-07-06
    • 2016-07-02
    • 1970-01-01
    • 2013-11-17
    • 1970-01-01
    相关资源
    最近更新 更多