Announcement

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

  • Compressing several loops

    Hi all,
    I have the 16 loops below, that I want to compress it:
    HTML Code:
    
    mat Y = J(21, 32, .)
    forvalues i=1/21 {
          qui sum x if c`i'==1 & a1==1
          matrix Y[`i',1] = r(min)
          matrix Y[`i',2] = r(max)
          }
    
    forvalues i=1/21 {
          qui sum x if c`i'==1 & a2==1
          matrix Y[`i',3] = r(min)
          matrix Y[`i',4] = r(max)
          }
    
    forvalues i=1/21 {
          qui sum x if c`i'==1 & a3==1
          matrix Y[`i',5] = r(min)
          matrix Y[`i',6] = r(max)
          }
    
    forvalues i=1/21 {
          qui sum x if c`i'==1 & a4==1
          matrix Y[`i',7] = r(min)
          matrix Y[`i',8] = r(max)
          }
    
    
    forvalues i=1/21 {
          qui sum x if c`i'==1 & a5==1
          matrix Y[`i',9] = r(min)
          matrix Y[`i',10] = r(max)
          }
    
    
    forvalues i=1/21 {
          qui sum x if c`i'==1 & a6==1
          matrix Y[`i',11] = r(min)
          matrix Y[`i',12] = r(max)
          }
    
    
    forvalues i=1/21 {
          qui sum x if c`i'==1 & a7==1
          matrix Y[`i',13] = r(min)
          matrix Y[`i',14] = r(max)
          }
    
    forvalues i=1/21 {
          qui sum x if c`i'==1 & a8==1
          matrix Y[`i',15] = r(min)
          matrix Y[`i',16] = r(max)
          }
    
    forvalues i=1/21 {
          qui sum x if c`i'==1 & a9==1
          matrix Y[`i',17] = r(min)
          matrix Y[`i',18] = r(max)
          }
    
    forvalues i=1/21 {
          qui sum x if c`i'==1 & a10==1
          matrix Y[`i',19] = r(min)
          matrix Y[`i',20] = r(max)
          }
    
    forvalues i=1/21 {
          qui sum x if c`i'==1 & a11==1
          matrix Y[`i',21] = r(min)
          matrix Y[`i',22] = r(max)
          }
    
    forvalues i=1/21 {
          qui sum x if c`i'==1 & a12==1
          matrix Y[`i',23] = r(min)
          matrix Y[`i',24] = r(max)
          }
    
    forvalues i=1/21 {
          qui sum x if c`i'==1 & a13==1
          matrix Y[`i',25] = r(min)
          matrix Y[`i',26] = r(max)
          }
    
    forvalues i=1/21 {
          qui sum x if c`i'==1 & a14==1
          matrix Y[`i',27] = r(min)
          matrix Y[`i',28] = r(max)
          }
    
    forvalues i=1/21 {
          qui sum x if c`i'==1 & a15==1
          matrix Y[`i',29] = r(min)
          matrix Y[`i',30] = r(max)
          }
    
    forvalues i=1/21 {
          qui sum x if c`i'==1 & a16==1
          matrix Y[`i',31] = r(min)
          matrix Y[`i',32] = r(max)
          }
    
     
    I tried:
    HTML Code:
    local j = 1
    local k = 1
    forvalues i=1/21 {
          qui sum x if c`i'==1 & a`j'==1
          matrix Y[`i',`k'] = r(min)
          local ++k
          matrix Y[`i',`k'] = r(max)
          local ++k
          local ++j
          
          }
    and
    HTML Code:
    local j = 1
    local k = 1
    forvalues i=1/21 {
          qui sum x if c`i'==1 & a`j'==1
          matrix Y[`i',`k'] = r(min)
          local ++k
          matrix Y[`i',`k'] = r(max)
          local ++k
          local ++j
          
          }
    But they are not correct.
    I would appreciate if some one can help me with it.

    Best,
    Emma

  • #2
    Code:
    forvalues i = 1/21 {
    
        forvalues a = 1(1)16 {
        
          qui sum x if ( c`i'==1 & a`a'==1 )
          
          matrix Y[ `i' , `= -1 + 2 * `a'' ] = r(min)
          matrix Y[ `i' , `= 2 * `a'' ] = r(max)
          
         }
    }

    Comment


    • #3
      Thanks!

      Comment

      Working...
      X