0

How can I create a dummy variable in Stata that takes the value of 1 when the variable pax is above 100 and 0 otherwise? Missing values should be labelled as 0.

My code is the following:

generate type = 0
replace type = 1 if pax > 100

The problem is that Stata labels all missing values as 1 instead of keeping them as 0.

0

2 Answers 2

1

This occurs because Stata views missing values as large positive values. As such, your variable type is set equal to 1 when you request this for all values of pax > 100 (which includes missings).

You can avoid this by explicitly indicating that you do not want missing values replaced as 1:

generate type = 0
replace type = 1 if pax > 100 & pax != .
Sign up to request clarification or add additional context in comments.

Comments

0

Consider the toy example below:

clear 

input pax
20
30
40
100
110
130
150
.
.
.
end

The following syntax is in fact sufficient:

generate type1 = pax > 100 & pax < .

Alternatively, one can use the missing() function:

generate type2 = pax > 100 & !missing(pax)

Note the use of ! before the function, which tells Stata to focus on the non-missing values.

In both cases, the results are the same:

list

     +---------------------+
     | pax   type1   type2 |
     |---------------------|
  1. |  20       0       0 |
  2. |  30       0       0 |
  3. |  40       0       0 |
  4. | 100       0       0 |
  5. | 110       1       1 |
     |---------------------|
  6. | 130       1       1 |
  7. | 150       1       1 |
  8. |   .       0       0 |
  9. |   .       0       0 |
 10. |   .       0       0 |
     +---------------------+

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.