为什么我的虚拟变量转换在 Stata 中产生:类型不匹配?



我正在尝试用虚拟值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

因此,您可能不需要在此处执行任何操作。

我听过反复的故事,演讲者被问到他们的指标gendersex走向何方而不知道,这是一个严重的失态。本文中可以找到更多的讨论。

最新更新