数据包含ID,year,且每个ID有数据的year并不相同。这种情况我们希望对每个ID补全1997-2013的连续时间数据(没有数据的年份其他X变量为NA)
如下图,对PUBID==15,需要补全他在year=1997-2001&2003&2007&2008&2012&2013的数据
df:
#首先取出ID的集合
id=distinct(df,PUBID)
#然后让每个ID重复17次
#这里rep()用each=17即idd=15,15,15,15,...
#如果是times=17 即15,32,15,32,...
idd=rep(as.vector(unlist(id)),each=17)
#创建一个完整连续时间的数据框,一列是ID(每个ID重复17次),一列是year
time=data.frame(PUBID=idd,year=rep(1997:2013,length(id)))
#最后用merge把原数据框和完整数据框times合并即可
#记得一定要by= ID和时间!
df2=merge(df,time,by=c('PUBID','year'),all=T)
最后得到的time(完整连续时间数据框)应该是这样的:
PUBID | year |
15 | 1997 |
15 | 1998 |
15 | 1999 |
15 | 2000 |
15 | 2001 |
... | ... |
32 | 1997 |
32 | 1998 |
32 | 1999 |
得到我们需要的df2: