2011-12-02 8 views
0

パネルデータに年を追加しようとしています。ちょうどあなたの人がそれを行うための迅速な方法のアイデアを持っているかどうかは不思議です。実際のデータはT = 6、i = 4000です。パネルデータに追加の観測を追加するR

# Here is my input 
data = data.frame(time=c(30,40,50,30,40,50,30,40,50), 
        id=c(1,1,1,2,2,2,3,3,3), 
        d=c(1,4,7,8,14,2,41,11,61)) 
# declare panel data individ and time 
pd = pdata.frame(data, c("id","time"), drop.index=FALSE) 

#this is what I want out... 
data.out = data.frame(time=c(30,40,50,60,30,40,50,60,30,40,50,60), 
         id=c(1,1,1,1,2,2,2,2,3,3,3,3), 
         d=c(1,4,7,8,9,14,2,41,50,11,61,70)) 
# declare panel data individ and time 
pd.data.out = pdata.frame(data.out, c("id","time"), drop.index=FALSE)  

答えて

0

に凝縮させることができます。

time = rep(c(unique(as.numeric(as.character(pd$time))),max(as.numeric(as.character(pd$time)))+10), length(unique(pd$id))) 
id = rep(unique(pd$id), each=max(as.numeric(as.character(pd$id)))+1) 
data2 = data.frame(time, id) 

data.out = merge(data2, pd, all.x=T) 
data.out = data.out[with(data.out, order(id,time)), ]  
2

私はあなたがやっていることはかなりわかりませんが、これは役立つかもしれない:、

data = data.frame(time=c(30,40,50,30,40,50,30,40,50), 
        id=c(1,1,1,2,2,2,3,3,3), 
        d=c(1,4,7,8,14,2,41,11,61)) 
newdata = data.frame(time=c(60,60,60), 
        id=c(1,2,3), 
        d=c(9,50,70)) 
combodata = rbind(data,newdata) 
data.out = combodata[order(combodata$id,combodata$time), ] 
rownames(data.out) = NULL 

> data.out 
    time id d 
1 30 1 1 
2 40 1 4 
3 50 1 7 
4 60 1 9 
5 30 2 8 
6 40 2 14 
7 50 2 2 
8 60 2 50 
9 30 3 41 
10 40 3 11 
11 50 3 61 
12 60 3 70 

を生成するために、私は、これはあなたがtimeidのために欲しいものだと思いますdはわずかに異なります。行はその後、注文する必要がない場合は、コードの最後の3行は、それが...ちょうど新しい時間とid data.frameを作成し、そこにマージガット

data.out = rbind(data,newdata) 
関連する問題