创建虚拟变量时忽略缺失值
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 |
+---------------------+
当变量 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 |
+---------------------+