【发布时间】:2018-03-15 14:02:35
【问题描述】:
自从使用大型数据库以来,我再次遇到一个问题,即如何在没有循环的情况下有效地进行一些计算。
底层不平衡面板数据集采用下面df1的形式。可以看出,有不同年份的个体 (ID) 被观察到。有时也有闲聊年(见 ID 4):
library(data.table)
df1 = data.table( Year = c(2000, 2001,2002, 2003, 2000, 2001, 2000,
2001,2002, 2003, 2004, 2001,2003,2004),
ID = c(1,1,1,1,2,2,3,3,3,3,3,4,4,4),
V1 = c(10, 9, 8,11, 2,3, 16,12,15,16,20, 8,7,9),
V2 = c(2,3,2,4,0.5,1, 4,6,5,8,9, 8,10,11)
)
我想创建一个变量 V3,其中为每个 ID 计算第一年观察的 V1/V2。在接下来的几年观察中,这个值被保持或复制。 请参阅下面 df2 中所需的输出:
df2 = data.table( Year = c(2000, 2001,2002, 2003, 2000, 2001, 2000,
2001,2002, 2003, 2004,2001,2003,2004),
ID = c(1,1,1,1,2,2,3,3,3,3,3,4,4,4),
V1 = c(10, 9, 8,11, 2,3, 12,16,15,16,20, 8,7,9),
V2 = c(2,3,2,4, 0.5,1, 4,6,5,8,9 ,8,10,11),
V3 = c(5,5,5,5,4,4,3,3,3,3,3, 1,1,1 )
)
【问题讨论】:
标签: r data.table panel-data