Announcement

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

  • How to jump out a forvalue loop after finding a specific value ?

    cd "C:\Users\GagaLee\Desktop\ga"
    local ff : dir . files "*.dta"
    dis `"`ff'"'

    mat ga=J(48,2,.)
    local x=1
    foreach i of local ff {
    use `i'
    local N=_N
    forvalue a=1(1)`N'{
    sum vo2_2 if inrange(_n,`a',(`a'+30))
    local xxx=r(sd)/r(mean)
    mat ga[`x',1]=`a' if inrange(`xxx',0,0.15)
    mat ga[`x',2]=r(mean) if inrange(`xxx',0,0.15)
    if inrange(`xxx',0,0.15) break
    }
    local ++x
    }

  • #2
    See -help continue-

    A simple example:
    Code:
    sysuse auto,clear
    forv i = 1/5 {
        disp "Current i value = " `i'
        dis mpg[`i']
        if inrange(mpg[`i'], 19,20) ==1  {
            continue,break
        }
    }

    Comment


    • #3
      I have tried this but still in vain ...


      ----------------------------------------
      cd "C:\Users\GagaLee\Desktop\123"
      local ff : dir . files "*.dta"
      dis `"`ff'"'

      mat ga=J(48,3,.)
      local x=1

      foreach i of local ff {
      use `i'
      local N=_N
      forvalue a=1/(`N'-30){
      sum vo2_2 if inrange(_n,`a',(`a'+30))
      local xxx=r(sd)/r(mean)
      if `xxx'< 0.15
      {
      mat ga[`x',2]=`a'
      mat ga[`x',3]=r(mean)
      continue, break
      }

      }
      local outfile = substr("`i'",1,2)
      mat ga[`x',1]=`outfile'
      local ++x
      clear
      }
      -------------------------------------

      invalid syntax
      r(198);

      Comment


      • #4
        I have found the bug. Sincerely thank you for your reply!

        --

        cd "C:\Users\GagaLee\Desktop\ga"
        local ff : dir . files "*.dta"
        dis `"`ff'"'

        mat ga=J(48,3,.)
        local x=1

        foreach i of local ff {
        use `i'
        local N=_N-30
        forvalue a=1(1)`N'{
        sum vo2_2 if inrange(_n,`a',(`a'+30))
        local xxx=r(sd)/r(mean)
        dis `a'
        if `xxx'< 0.05{
        mat ga[`x',2]=`a'
        mat ga[`x',3]=r(mean)
        continue, break
        }
        }
        local outfile = substr("`i'",1,2)
        mat ga[`x',1]=`outfile'
        local ++x
        clear
        }

        Comment

        Working...
        X