AY1214=merge(x=AY12,y=AY14,by.x=c("nquest","nord"),by.y=c("nquest","nordp")) AY1214=subset(AY1214,select=c("ylm.x","STUDIO","STACIV","ETA.x","SEX","ylm.y","studio","staciv","ETA.y","sex")) panelID=seq(1:nrow(AY1214)) AY1214=cbind(panelID,AY1214) AY1214=na.omit(AY1214) D1=AY1214[,c(1,2:6)] D2=AY1214[,c(1,7:11)] names(D1)=names(D2)=c("panelID","ylm","studio","staciv","eta","sex") D=rbind(D1,D2) D=D[sort.list(D$panelID),] head(D) ybar=tapply(D$ylm,INDEX=D$panelID,FUN=mean) ybar=rep(ybar,each=2) xbar=tapply(D$eta,INDEX=D$panelID,FUN=mean) xbar=rep(xbar,each=2) xtilde=D$eta-xbar ytilde=D$ylm-ybar beta=sum(xtilde*ytilde)/(sum(xtilde*xtilde)) ybar=tapply(D$ylm,INDEX=D$panelID,FUN=mean) xbar=tapply(D$eta,INDEX=D$panelID,FUN=mean) a=ybar-xbar*beta PD=plm.data(D,index="panelID") pm=plm(ylm~eta,data=PD,model=c("within"),effects="individual") pm=plm(ylm~eta,data=PD,model=c("random"),effects="individual") summary(pm)