UCLA Academic Technology Services HomeServicesClassesContactJobs
Search

Stata Code Fragment: 
Working Across Variables

* say that you want to look across variables as see
* if any of the variables is zero (iszero) 
* when the variable was FIRST zero (whenzer)
* and the number of non missing variables (nonmiss)

* you can do this by loopoing across observations
* and then looping across variables

* 1. lets make the variables "iszero" "whenzer" and "nonmiss"
capture drop iszero whenzer nonmiss
gen iszero = .
gen whenzer = .
gen nonmiss = .

* 2. here is the list of variable we want to work across
local array "var1 var2 var3"  
local numvars : word count `array'

* 3. set up the loop for looping across observations
local obsno = 1
while `obsno' <= _N {
  * initialize variables
  local iszero = 0
  local whenzer = 0
  local nonmiss = 0

  * variable number
  local varno = 1

  * 4. loop across variables
  while `varno' <= `numvars' {
    local varname : word `varno' of `array'
    if (`varname'[`obsno'] != .) {
      local nonmiss = `nonmiss' + 1
    }
    if (`varname'[`obsno'] == 0)  {
      if (`iszero' == 0) {
        local whenzer = `varno'
      }
      local iszero = 1
    }

    local varno = `varno' + 1
  }

  * 5. make replacements based on looping across observations
  replace iszero  = `iszero'  in `obsno'
  replace whenzer = `whenzer' in `obsno'
  replace nonmiss = `nonmiss' in `obsno'
  local obsno = `obsno' + 1
}


How to cite this page

Report an error on this page

UCLA Researchers are invited to our Statistical Consulting Services
We recommend others to our list of Other Resources for Statistical Computing Help
These pages are Copyrighted (c) by UCLA Academic Technology Services


The content of this web site should not be construed as an endorsement of any particular web site, book, or software product by the University of California