【发布时间】: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 0DT[,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