This works fine for me. In the absence of an indication of exactly what
you typed, I cannot explain what you did wrong.
. clear
. set obs 4
obs was 0, now 4
. gen gender = cond(mod(_n,2), "m", "f")
. l
+--------+
| gender |
|--------|
1. | m |
2. | f |
3. | m |
4. | f |
+--------+
. label def female 0 "m" 1 "f"
. encode gender, gen(female) label(female)
. l
+-----------------+
| gender female |
|-----------------|
1. | m m |
2. | f f |
3. | m m |
4. | f f |
+-----------------+
. l, nola
+-----------------+
| gender female |
|-----------------|
1. | m 0 |
2. | f 1 |
3. | m 0 |
4. | f 1 |
+-----------------+
Nick
[email protected]
Miranda Kim
I tried this but couldn't make it work, as it then automatically encodes
the variables with 2's and 3's...
Nick Cox wrote:
> In addition to other answers the direct answer to the second question
is
> "Yes":
>
> label def female 0 "m" 1 "f"
> encode gender, gen(female) label(female)
>
> It would no harm to check on any missings:
>
> tab gender if !inlist(female, 0, 1)
Miranda Kim
> How can I efficiently convert string variables (such as gender with
> values 'f' 'm') into binary 0/1 variables?
> Can I fiddle with encode so that it codes 0/1 instead of 1/2?
*
* 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/