R 补全多个ID不连续日期数据

数据包含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(完整连续时间数据框)应该是这样的:

PUBIDyear
151997
151998
151999
152000
152001
......
321997
321998
321999

得到我们需要的df2:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值