Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | "Nick Cox" <n.j.cox@durham.ac.uk> |
To | <statalist@hsphsun2.harvard.edu> |
Subject | st: RE: AW: RE: AW: AW: recoding a variable |
Date | Thu, 18 Feb 2010 14:11:05 -0000 |
Quite. It is important to underline that the solutions differ. Nick n.j.cox@durham.ac.uk Martin Weiss " Another way to do it" Though this represents a different take on the problem, one which leads to a mapping of missings in the var to newvar, while mine set newvar to zero in these cases: clear set obs 10000 gen var=runiform() replace var=. in 5/8 gen byte newvar=var>.5 & !mi(var) gen byte newvar2 = cond(missing(var), . , var > .5) l in 1/10, noo Nick Cox Another way to do it gen byte newvar = cond(missing(var), . , var > .5) Martin Weiss As always with the "greater than" operator in Stata, special care should be taken with regard to missings. So my expanded advice for you would be to explicitly account for them: clear set obs 10000 gen var=runiform() su var //introduce missings replace var=. in 5/8 ins var //explicity deal with missings gen byte newvar=var>.5 & !mi(var) ta newvar, mis l in 1/10, noo Martin Weiss replace var=var>.5 Data Analytics Corp. (Walter R. Paczkowski, Ph.D.) I got some very good quick advice on a looping question I asked earlier. I have another question. Suppose I have a variable with values that range between 0 ands 1. I simply want to recode this so that any value greater than 0.5 becomes a 1, and 0 otherwise. How do I do this? * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/