Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down on April 23, and its replacement, is already up and running.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

st: Find variable with first occurrence of a value in a list of variables

From   Mike Lacy <>
Subject   st: Find variable with first occurrence of a value in a list of variables
Date   Tue, 13 Jul 2010 07:33:46 -0600

I'm looking for a relatively easy way to find, for each observation, which variable in a list has the first occurrence of a particular value. I was looking for a built-in solution, but not finding something, came up with a "roll your own" solution that seems less than ideal, and so am seeking suggestions

// Example data: For each case, find first occurrence of a "1" in a list of five variables.
set obs 10
forval i = 1/5 {
   gen byte x`i' = (runiform() > 0.6)
local value_of_interest 1
tempvar found
gen byte `found' = 0
gen str varname = ""
foreach v of varlist x1-x5 {
   replace varname  = "`v'" if (!`found') & (`v' == `value_of_interest')
   replace `found' = 1 if (`v' == `value_of_interest')

I'm interested in a simple and efficient approach to the general case, i.e., not assuming that the variable list of interest is numbered. Among other things, the looping approach here would seem a bit better if there was a way to terminate the search for each observation the loop when `found' ==1.


Mike Lacy, Assoc. Prof.
Soc. Dept., Colo. State. Univ.
Fort Collins CO 80523 USA

*   For searches and help try:

© Copyright 1996–2015 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index