为什么Stata中的伪变量转换会产生:类型不匹配?
我试图用伪值1和0简单地替换字符串“Female”。 我理解不允许从字符串转换。因此,我尝试通过以下方式进行转换:为什么Stata中的伪变量转换会产生:类型不匹配?,stata,Stata,我试图用伪值1和0简单地替换字符串“Female”。 我理解不允许从字符串转换。因此,我尝试通过以下方式进行转换: replace female =1 if female=="Female" 这边 replace female = "1" if female == "Female" 但两者都给出了错误术语: type mismatch r(109); 我不确定如何解决这个问题,我确信列出的第二个代码可以工作 这意味着变量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
查看变量的基础值很有帮助。