我正在尝试使用 data.table 来填充我拥有的大型不平衡多维面板中缺失的观察结果。下面是一个数据示例,其中包含一些关于我想要什么的评论:
mydat <- structure(list(fund = c(1, 1, 1, 1, 2, 2, 2, 3, 3), holdingid = c(10,
10, 11, 11, 15, 15, 14, 20, 20), yearqtr = structure(c(2000,
2000.5, 2000, 2000.25, 2000, 2000.75, 2000.25, 2000.25, 2000.5
), class = "yearqtr"), shares = c(20, 25, 30, 30, 34, 34, 4,
8, 10)), .Names = c("fund", "holdingid", "yearqtr", "shares"), row.names = c(NA,
-9L), class = "data.frame")
allqtrs <- structure(c(2000, 2000.25, 2000.5, 2000.75), class = "yearqtr")
#note that there are missing yearqtrs for some fund-holding series
#if a fund-holding series is missing an observation I want to create
#that fund-holding-quarter and fill it with NA
我试图平衡小组与适当滞后(或区分)每个基金持有id系列的最终目标(在数据的不规则性得到处理的意义上)。显然我可以为每个fund-holdingid组使用zoreg并使用它来滞后,但我的数据超过2000万行,我正在尝试编写一个更有效的解决方案。谢谢您的帮助。
编辑为了澄清一点,我希望做一些类似于通过外部连接使用 Oracle SQL 的分区可以完成的事情,如此处所示http://st-curriculum.oracle.com/obe/db/10g/r2/prod/出价/outerjoin/outerjoin_otn.htm
EDIT-2我在描述中使用了很多时间序列术语。更具体地说,对于每个持有基金的货币对,我想对 allqtrs 中的每个 yearqtr 进行观察。所以在这种情况下,由于有 3 只基金分别持有 3、2 和 1 股,因此输出中应该有 (2+2+1)*4 总行,因为每个基金持有可能有 4 个季度。另一个重要的一点是,控股公司非常多样化。像 expand.grid(unique(fund),unique(holdingid),unique(allqtrs)) 这样的东西会导致太多的行,因为每个基金只有一小部分可能的持有量。