我想在 data.frame 中为每个组(公司和类型)的所有缺失年份创建新行。数据框如下所示:
minimal <- data.frame(firm = c("A","A","A","B","B","B","A","A","A","B","B","B"),
type = c("X","X","X","X","X","X","Y","Y","Y","Y","Y","Y"),
year = c(2000,2004,2007,2010,2008,2001,2002,2003,2007,2000,2001,2008),
value = c(1,3,7,9,9,2,3,3,7,5,9,15)
)
数据框:
firm type year value
A X 2000 1
A X 2004 3
A X 2007 7
B X 2010 9
B X 2008 9
B X 2001 2
A Y 2002 3
A Y 2003 3
A Y 2007 7
B Y 2000 5
B Y 2001 9
B Y 2008 15
现在,我想要得到的是以下内容:
我可以在数据中看到最小年份是 2000 年,最大年份是 2010 年。我想为每个公司类型组合的每个缺失年份添加一行。
例如。对于公司 A 和类型 X,我想添加行,使其看起来像这样:
最终输出:
firm type year value
A X 2000 1
A X 2004 3
A X 2007 7
A X 2001 1
A X 2002 1
A X 2003 1
A X 2005 3
A X 2006 3
A X 2008 7
A X 2009 7
A X 2010 7
此外,我想将上一年的值写入所有后续年份的缺失行的“值”列,直到出现新的非缺失行(如最终输出示例中所示)。
我还没有想出任何有用的代码,但到目前为止我发现以下可能是正确的方向:
setDT(minimal)[, .SD[match(2000:2010, year)],
by = c("firm","type")]
我不太理解 setDT 和 .SD 的概念,但这会为每个公司类型组合创建至少一行。然而,今年没有内容。
预先非常感谢!