Announcement

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

  • forvalues error in event study files

    Hello everyone, i'm doing event studies using the following code:

    Code:
    clear all
    set mem 1g
    set more off
    
    cd  
    mkdir "\Users\rehman\Desktop\event\"
    
    capture log close
    log using "\Users\rehman\Desktop\event\bARC_Stata.log", replace
    
    
    * --------- Firm Data ------------- *
    
    use                "/Users/rehman/Desktop/event/stock_ret.dta"
    
    egen co_id = group(stkcd)
    
    bysort co_id: gen days_co =_n
    
    xtset co_id days_co
    
    gen co_ret = dretwd
    
    sort co_id date
    
    save "C:\EventStudy\Input\FirmData.dta", replace
    
    keep stkcd co_id
    order stkcd co_id
    duplicates drop
    sort stkcd
    save "C:\EventStudy\Temp\FirmIDs.dta", replace
    
    
    * --------- Market Data ------------- *
    
    use        "/Users/rehman/Desktop/event/market_ret.dta"
     
    egen mkt_id = group(markettype)
    
    sort mkt_id date
    
    bysort mkt_id: gen days_mkt =_n
    
    xtset mkt_id days_mkt
    
    gen mkt_ret = dretwdtl
    
    sort mkt_id date
    
    save "C:\EventStudy\Input\MarketData.dta", replace
    
    keep markettype mkt_id
    order markettype mkt_id
    duplicates drop
    sort markettype
    save "C:\EventStudy\Temp\MarketIDs.dta", replace
    
    
    * --------- Event Data ------------- *
    
    use        "/Users/rehman/Desktop/event/event.dta"
    
    save "C:\EventStudy\Input\EventData.dta", replace
    
    sort stkcd
    merge stkcd using "C:\EventStudy\Temp\FirmIDs.dta"
    drop if _m != 3
    drop _merge
    
    sort markettype
    merge markettype using "C:\EventStudy\Temp\MarketIDs.dta"
    drop if _m != 3
    drop _merge
    
    order eventid stkcd co_id markettype mkt_id date
    sort date
    save "C:\EventStudy\Input\EventData.dta", replace
    
    sort co_id
    summ co_id
    local tot_cos = `r(max)'
    forvalues i = 1/`tot_cos' {
              local mkt_name_co_id_`i' = markettype[`i']
              local mkt_id_co_id_`i' = mkt_id[`i']
          }
    
    
    * --------- Combining Firm, Market & Event Data ------------- *
    
    sort co_id date
    merge co_id date using "C:\EventStudy\Input\FirmData.dta"
    drop _merge
    
    forvalues i = 1/`tot_cos' {
          if co_id == `i' {
             replace markettype = "`mkt_name_co_id_`i''"
             replace mkt_id = `mkt_id_co_id_`i''
             }
          }
    From the above code, i find the following output:

    Code:
    drop _merge
    
    .
    . forvalues i = 1/`tot_cos' {
      2.           if co_id == `i' {
      3.              replace markettype = "`mkt_name_co_id_`i''"
      4.              replace mkt_id = `mkt_id_co_id_`i''
      5.              }
      6.           }
    type mismatch
    r(109);
    
    end of do-file
    
    r(109);
    does anyone know why this forvalues error appears here?

    Code:
    * Example generated by -dataex-. To install: ssc install dataex
    clear
    input long stkcd float(date co_id) byte markettype float mkt_id
    1 16223 1 4 2
    1 17492 1 4 2
    1 17801 1 4 2
    1 17801 1 4 2
    1 18064 1 4 2
    1 18507 1 4 2
    1 19012 1 4 2
    1 22280 1 4 2
    1 22530 1 4 2
    2 14623 2 4 2
    2 14623 2 4 2
    2 14671 2 4 2
    2 14783 2 4 2
    2 15215 2 4 2
    2 15886 2 4 2
    2 15957 2 4 2
    2 16159 2 4 2
    2 16159 2 4 2
    2 16356 2 4 2
    2 16356 2 4 2
    2 16356 2 4 2
    2 16399 2 4 2
    2 17246 2 4 2
    2 17367 2 4 2
    2 19128 2 4 2
    2 19803 2 4 2
    2 19964 2 4 2
    2 19971 2 4 2
    2 19982 2 4 2
    2 20116 2 4 2
    2 20304 2 4 2
    2 20327 2 4 2
    2 20327 2 4 2
    2 20429 2 4 2
    2 20431 2 4 2
    2 20431 2 4 2
    2 20431 2 4 2
    2 20431 2 4 2
    2 20431 2 4 2
    2 20438 2 4 2
    2 20438 2 4 2
    2 20642 2 4 2
    2 20671 2 4 2
    2 20675 2 4 2
    2 20675 2 4 2
    2 20675 2 4 2
    2 20675 2 4 2
    2 20675 2 4 2
    2 20675 2 4 2
    2 20675 2 4 2
    2 20682 2 4 2
    2 20781 2 4 2
    2 20781 2 4 2
    2 20781 2 4 2
    2 20781 2 4 2
    2 20781 2 4 2
    2 20781 2 4 2
    2 20781 2 4 2
    2 20781 2 4 2
    2 20781 2 4 2
    2 20781 2 4 2
    2 20788 2 4 2
    2 20895 2 4 2
    2 21000 2 4 2
    2 21368 2 4 2
    2 21385 2 4 2
    2 21385 2 4 2
    2 21385 2 4 2
    2 21385 2 4 2
    2 21385 2 4 2
    2 21385 2 4 2
    2 21385 2 4 2
    2 21390 2 4 2
    2 21439 2 4 2
    2 21439 2 4 2
    2 21439 2 4 2
    2 21439 2 4 2
    2 21439 2 4 2
    2 21474 2 4 2
    2 21903 2 4 2
    2 22006 2 4 2
    2 22400 2 4 2
    4 15118 4 4 2
    4 15208 4 4 2
    4 16142 4 4 2
    4 16772 4 4 2
    4 16800 4 4 2
    4 18792 4 4 2
    4 18829 4 4 2
    4 19859 4 4 2
    4 20250 4 4 2
    4 20278 4 4 2
    4 20283 4 4 2
    4 20285 4 4 2
    4 20305 4 4 2
    4 20327 4 4 2
    4 20339 4 4 2
    4 20369 4 4 2
    4 21165 4 4 2
    4 21649 4 4 2
    end

  • #2
    Your example data shows us that markettype is a numeric variable stored as a byte, yet your replace command assigns it the string value "`mkt_name_co_id_`i''"

    Comment


    • #3
      Thanks William Lisowski

      Code:
      forvalues i = 1/`tot_cos' {
        2.           if co_id == `i' {
        3.              replace markettype = `mkt_name_co_id_`i''
        4.              replace mkt_id = `mkt_id_co_id_`i''
        5.              }
        6.           }
      (5,115,206 real changes made)
      (9,838,409 real changes made)

      Comment

      Working...
      X