我正在尝试用虚拟值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);
尝试使用数值1
进行replace female
很好,但测试if female == "female"
顺序不正确,因为变量female
是数字。
仍然存在您要做什么以及为什么的问题。从 Stata 的角度来看,理想的指标变量
(a( 为 1 或 0
(b( 分配了值标签
(c( 以值为 1 的州命名,因此当且只有值 1 表示女性时,命名为female
。
因此,您可能不需要在此处执行任何操作。
我听过反复的故事,演讲者被问到他们的指标gender
或sex
走向何方而不知道,这是一个严重的失态。本文中可以找到更多的讨论。