首页 > 解决方案 > R数据表中的滞后财务数据

问题描述

我有一个包含多个财务数据的数据集,包括一些基本面。例如,我从 4 月获得了债务数据,但实际上应该是 12 月。因为它们是在稍后发布的,所以我必须将它们滞后于 appr。4个月。

这就是我的数据的样子(插图)

k <- c("gvkey1" , "gvkey1" , "gvkey1" , "gvkey1", "gvkey2", "gvkey2", "gvkey2", "gvkey2", "gvkey2", "gvkey3", "gvkey3")

l <- c("Date1", "Date2", "Date3", "Date4" , "Date5" , "Date6" , "Date7" , "Date8" , "Date9" , "Date10" , "Date11" )
m <- c(1:11)

y <- structure(list(a = l, b = k, c = m), .Names = c("Date", "gvkey" , "DLCQ"),
               row.names = c(NA, -11L), class = "data.frame")
     Date  gvkey DLCQ
1   Date1 gvkey1    1
2   Date2 gvkey1    2
3   Date3 gvkey1    3
4   Date4 gvkey1    4
5   Date5 gvkey2    5
6   Date6 gvkey2    6
7   Date7 gvkey2    7
8   Date8 gvkey2    8
9   Date9 gvkey2    9
10 Date10 gvkey3   10
11 Date11 gvkey3   11

这是我已经尝试过的代码:

x <- shift(y$DLCQ, 4L)

然而,这给了我一个单一的向量,基本上“删除”了所有其他列(日期、gvkey)。

[1] NA NA NA NA  1  2  3  4  5  6  7

它应该看起来像这样:

     Date  gvkey DLCQ
1   Date1 gvkey1    NA
2   Date2 gvkey1    NA
3   Date3 gvkey1    NA
4   Date4 gvkey1    NA
5   Date5 gvkey2    1
6   Date6 gvkey2    2
7   Date7 gvkey2    3
8   Date8 gvkey2    4
9   Date9 gvkey2    5
10 Date10 gvkey3    6
11 Date11 gvkey3    7

此外,由于我的数据是长格式的,因此代码应该为每个 gvkey 单独运行(例如,使用 ,by =gvkey)。

谢谢约翰内斯

标签: r

解决方案


推荐阅读