Search code examples
statageneratestata-macros

Generating categorical variable


In my Stata data set, the "alternative" variable consists of 4 modes including pier, private, beach and charter.

I want to generate new variable y as follows:

We collapse the model to three alternatives and order the alternatives, with y = 0 if fishing from a pier or beach, y = 1 if fishing from a private boat and y = 2 if fishing from a charter.

I tried to do this by looking at thetas in this website: stata tips but I can't solve it.

Note: I don't understand from the dataset. And I get error related to type of the variable while generating variable I download the dataset from the website https://www.stata-press.com/data/musr/musr.zip The data name is mus15data

The variables in the dataset is as follows:

enter image description here

Here, "mode" variable is alternatives.


Solution

  • If I understand correctly, this is

    gen y = 0 if inlist(1, dbeach, dpier)
    * gen y = 0 if dbeach == 1 | dpier == 1 
    replace y = 1 if dprivate == 1 
    replace y = 2 if dcharter == 1 
    

    Many other solutions are possible. Here is one more.

    gen y = cond(inlist(1, dbeach, pier), 0, 2 * (dcharter == 1) + (dprivate == 1))
    

    If all those variables are only ever 0 or 1 (and never missing) some simplifications are possible.

    Go only with code you find clear and can explain to others.

    I am assuming that pier, beach, private, charter are mutually exclusive. I've not checked with the dataset.