我在Stata中处理某人的数据集,它使用虚拟变量来表示主题ID,如下所示:
variable name variable label
country_dummy1 Afghanistan
country_dummy2 Albania
country_dummy3 Algeria
...
这使得数据集非常难以使用,我正在尝试从虚拟对象生成主题id变量(country),看起来像这样
country country_dummy1 country_dummy2 country_dummy3
Afghanistan 1 0 0
Albania 0 1 0
Algeria 0 0 1
我写了以下命令:
gen country = "."
foreach x of varlist country_dummy1-country_dummy175 {
local z : variable label `x'
replace country = `z' if `x'==1
}
Stata产生了以下错误消息:
Afghanistan not found
r(111);
我无法确定为什么会这样 .
1 回答
你需要
请注意,Stata不会将
"."
视为缺少字符串值 . 您的错误是,如果您没有指定要使用""
的文字字符串,那么Stata将查找具有您指定名称的变量 . 在您的情况下,Afghanistan
将是一个合法的变量名称,但您没有这样的变量:因此错误 . 名称中带有空格的国家也会因其他原因而出现问题,但由于同样的原因,命令几乎总会失败 .这也应该有效:
您可以在
foreach
上发送quietly
以避免来自replace
的175条消息 .