创建虚拟变量时忽略缺失值

Ignore missing values when creating dummy variable

当变量 pax 高于 100 时,如何在 Stata 中创建一个取值为 1 的虚拟变量,否则为 0? 缺失值应标记为 0.

我的代码如下:

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

问题是 Stata 将所有缺失值标记为 1,而不是将它们保留为 0

发生这种情况是因为 Stata 将缺失值视为较大的正值。因此,当您为 pax > 100 的所有值(包括缺失值)请求此变量时,您的变量 type 设置为等于 1

您可以通过明确指出您不想将缺失值替换为 1:

来避免这种情况
generate type = 0
replace type = 1 if pax > 100 & pax != .

考虑下面的玩具示例:

clear 

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

以下语法实际上就足够了:

generate type1 = pax > 100 & pax < .

或者,可以使用 missing() 函数:

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

注意在函数前使用 !,它告诉 Stata 关注非缺失值。

在这两种情况下,结果是相同的:

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 |
     +---------------------+