使用不同年份的变量来创建模型

时间:2016-03-18 07:25:02

标签: r stata panel-data recode

有没有办法在R中执行以下Stata代码?

我想创建一个交错的模型,我想在1998年为那些年满40岁的人使用某些变量的值;并希望对2000年年满40岁的人使用1996年相同变量的值。

for any out temp emp edu married inc age \ var cesd1998 bitemp96 employ94 edu93 married94 inc94 age94 : gen XM2=Y if H0000200==1998

for any out temp emp edu married inc age \ var cesd2000 bitemp98 employ96 edu95 married96 inc96 age96 : replace XM2=Y if H0000200==2000

1 个答案:

答案 0 :(得分:1)

这不是答案,但不适合评论。我甚至不尝试R代码。在我看来,流利的R编码员,而不是我,可以合理地期望,作为一个绝对最小值,可以清楚地了解如何在R中保存数据。

这里的Stata语法远非当前,但是从Stata 7开始已经过时了。for在这里意义上甚至没有记录。

这不符合最小,完整,可验证的示例:https://stackoverflow.com/help/mcve

for any out temp emp edu married inc age \ var cesd1998 bitemp96 employ94 edu93 married94 inc94 age94 : gen XM2=Y if H0000200==1998

for any out temp emp edu married inc age \ var cesd2000 bitemp98 employ96 edu95 married96 inc96 age96 : replace XM2=Y if H0000200==2000

现有Stata的一个翻译是

 local x1list "out temp emp edu married inc age" 
 local x2list "out temp emp edu married inc age" 
 local y1list "cesd1998 bitemp96 employ94 edu93 married94 inc94 age94" 
 local y2list "cesd2000 bitemp98 employ96 edu95 married96 inc96 age96" 
 local nvars : word count `x1list' 

 forval j = 1/`nvars' { 
     local x : word `j' of `x1list' 
     local y : word `j' of `y1list' 
     replace `x'M2 = `y' if H0000200==1998
     local x : word `j' of `x2list' 
     local y : word `j' of `y2list'
     replace `x'M2 = `y' if H0000200==2000    
 } 

根本不是中心,但请注意,代码如此笨拙的一个原因是变量的命名约定不一致。