'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 1:[1]

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.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Nick Cox