我希望能够从数据集中创建一个面板,其中每个给定时间段都有一个观测值,以便每个单位在每个时期都有一个新的观测值。使用以下示例:
id <- seq(1:4)
year <- c(2005, 2008, 2008, 2007)
y <- c(1,0,0,1)
frame <- data.frame(id, year, y)
frame
id year y
1 1 2005 1
2 2 2008 0
3 3 2008 0
4 4 2007 1
对于每个唯一的ID,我希望在2005年、2006年、2007年和2008年(本框架的下限和上限时间)有一个独特的观察值,并将结果y设置为0,以便在没有现有观察情况的所有时间内,新框架看起来像这样:
id year y
1 1 2005 1
2 1 2006 0
3 1 2007 0
4 1 2008 0
....
13 4 2005 0
14 4 2006 0
15 4 2007 1
16 4 2008 0
我在循环方面没有取得太大的成功;非常感谢您提供任何想法。
merge(frame, g, by=c("id", "year"), all=TRUE)
(其中g
不包含y=0
)。 - Arung
,即使已知所有年份都存在,也不能这样做。 - G. Grothendieckid
将是一个因素。 - Arun