我正在尝试用虚拟值1和0简单替换字符串“ Female”。我知道不允许从字符串转换。因此,我尝试通过以下方式进行转换:
replace female =1 if female=="Female"
以这种方式
replace female = "1" if female == "Female"
但都吐出错误项:
type mismatch
r(109);
我不确定如何解决此问题,我确定列出的第二个代码可以正常工作。
隐含的是,与您的报告相反,变量female
是数字。它可能贴有价值标签。
您没有提供数据示例,甚至没有提供describe
的报告,但都可以重现这两个错误。
. clear
. set obs 2
number of observations (_N) was 0, now 2
. gen female = cond(_n == 1, 1, 0)
. label def female 1 female 0 male
. label val female female
. list
+--------+
| female |
|--------|
1. | female |
2. | male |
+--------+
. replace female = "1" if female == "female"
type mismatch
r(109);
. replace female = 1 if female == "female"
type mismatch
r(109);
. d female
storage display value
variable name type format label variable label
-------------------------------------------------------------------------------------------------------------
female float %9.0g female
即使错误消息相同,失败的原因也不同。
. replace female = "1" if female == "female"
type mismatch
r(109);
此操作失败,因为您试图用字符串female
替换"1"
的值,但是female
是一个数字变量。 Stata不能达到female
与字符串"female"
的比较,由于相同的原因,比较可能会失败。
. replace female = 1 if female == "female"
type mismatch
r(109);
尝试使用数字值replace female
尝试1
很好,但是由于变量if female == "female"
是数字,因此测试female
乱序。
仍然存在您要做什么以及为什么要做的问题。从Stata的角度来看,理想的指标变量
[(a)是1或0
[(b)已分配值标签
(c)为值1的状态命名,因此,如果只有值1表示女性,则将其命名为female
。
因此,您可能不需要在这里做任何事情。
[我听过很多反复的演讲,演讲者被问及他们的指标gender
或sex
往哪个方向走,却不知道,这是一个严重的错误。在this paper中可以找到更多讨论。