Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.

# st: RE: AW: RE: AW: AW: recoding a variable

 From "Nick Cox" To 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/
```