为什么Stata中的伪变量转换会产生:类型不匹配?

为什么Stata中的伪变量转换会产生:类型不匹配?,stata,Stata,我试图用伪值1和0简单地替换字符串“Female”。 我理解不允许从字符串转换。因此,我尝试通过以下方式进行转换: replace female =1 if female=="Female" 这边 replace female = "1" if female == "Female" 但两者都给出了错误术语: type mismatch r(109); 我不确定如何解决这个问题,我确信列出的第二个代码可以工作 这意味着变量female,与您的报告相反,是数字。它可能附加了值标

我试图用伪值1和0简单地替换字符串“Female”。 我理解不允许从字符串转换。因此,我尝试通过以下方式进行转换:

    replace female =1 if female=="Female"
这边

    replace female = "1" if female == "Female"
但两者都给出了错误术语:

type mismatch
r(109);

我不确定如何解决这个问题,我确信列出的第二个代码可以工作

这意味着变量
female
,与您的报告相反,是数字。它可能附加了值标签

您不提供数据示例,甚至不提供来自
描述的报告,但这两个错误都可以重现

. 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);
这会失败,因为您正试图用字符串
“1”
替换
女性的值,但
女性
是一个数字变量。Stata没有将
female
与字符串
“female”
进行比较,因为同样的原因,这将失败

. replace female = 1 if female == "female"
type mismatch
r(109);
尝试用数值
1
替换阴性
是可以的,但是如果阴性==“阴性”
的测试是错误的,因为变量
阴性
是数值

还有一个问题是你想做什么,为什么要这样做。从Stata的角度来看,理想的指标变量

(a) 是1还是0

(b) 已指定值标签

(c) 为值为1的状态命名,因此命名为
female
if且仅值1表示female

因此,您可能不需要在这里做任何事情


我曾多次听到主持人被问到他们的指标
gender
sex
朝哪个方向走,却不知道,这是一个严重的失态。更多的讨论可以在中找到

这意味着变量
female
,与您的报告相反,是数字。它可能附加了值标签

您不提供数据示例,甚至不提供来自
描述的报告,但这两个错误都可以重现

. 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);
这会失败,因为您正试图用字符串
“1”
替换
女性的值,但
女性
是一个数字变量。Stata没有将
female
与字符串
“female”
进行比较,因为同样的原因,这将失败

. replace female = 1 if female == "female"
type mismatch
r(109);
尝试用数值
1
替换阴性
是可以的,但是如果阴性==“阴性”
的测试是错误的,因为变量
阴性
是数值

还有一个问题是你想做什么,为什么要这样做。从Stata的角度来看,理想的指标变量

(a) 是1还是0

(b) 已指定值标签

(c) 为值为1的状态命名,因此命名为
female
if且仅值1表示female

因此,您可能不需要在这里做任何事情


我曾多次听到主持人被问到他们的指标
gender
sex
朝哪个方向走,却不知道,这是一个严重的失态。更多的讨论可以在中找到

谢谢@Nick Cox;为了回答您的问题,我尝试将变量female编码为1或0。IAs说,根据证据,它已经是数字了。如前所述,如果没有
描述
总结
报告或数据示例,我就说不出更多了。我想你最好去Statalist,那里有更多的眼睛在观察,包括在你的时区;否则请告诉我更多。您可能会发现使用
list,nolabel
查看变量的基本值很有帮助。谢谢@Nick Cox;为了回答您的问题,我尝试将变量female编码为1或0。IAs说,根据证据,它已经是数字了。如前所述,如果没有
描述
总结
报告或数据示例,我就说不出更多了。我想你最好去Statalist,那里有更多的眼睛在观察,包括在你的时区;否则请告诉我更多。您可能会发现使用
list,nolabel
查看变量的基础值很有帮助。