Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • variable xxx already defined error r110

    Hey guys!

    I'm using stata do—file to do a multi—period PSM appending on a panel dataset(which will then be used for did regression), the code is as follows:

    forvalues i = 2007/2021{
    use "C:\Users\lcg19\Desktop\论文\新数据分析2(空气质量标准对违约风险的 影响)\ dataset 6.24.dta",clear
    keep if Year==`i'
    set seed 20220626
    gen tmp=runiform()
    sort tmp
    psmatch2 Treated $ctrlvars , out(DDBhsh) logit neighbor(2) common ate
    drop if _weight==.
    save psmdid_`i',replace
    }
    use psmdid_2007,clear
    forvalues i = 2008/2021{
    append using psmdid_`i'
    }

    and after running stata gives me:
    do "C:\Users\lcg19\Desktop\论文\新数据分析2(空气质量标准对违约风险的影响)\ 稳健性检验\PSMDID逐期匹配.do"

    .
    . forvalues i = 2007/2021{
    2. use "C:\Users\lcg19\Desktop\论文\新数据分析2(空气质量标准对违约风险的影响)\ dataset 6.24.dta",clear
    3. keep if Year==`i'
    4. set seed 20220626
    5. gen tmp=runiform()
    6. sort tmp
    7. psmatch2 Treated $ctrlvars , out(DDBhsh) logit neighbor(2) common ate
    8. drop if _weight==.
    9. save psmdid_`i',replace
    10. }
    (0 observations deleted)
    variable tmp already defined
    r(110);

    I'm wondering what's wrong with my program, can anybody help me out? Thanks a lot!

  • #2
    After the first pass through your loop, the variable tmp exists, and -gen- won't allow you to -gen- an existing variable. You can do one of two things, use -replace-, or drop tmp each time after you use it.

    Code:
    gen tmp = .
    forvalues .... {
    ...
       replace tmp = runiform()
    ...
    }
    or
    Code:
    forvalues ....  {
       gen tmp = runiform()
    ...
    ..
       drop tmp
    }

    Comment

    Working...
    X