【问题标题】:Generate identity variable from dummy indicators in Stata从 Stata 中的虚拟指标生成标识变量
【发布时间】:2015-11-09 03:45:43
【问题描述】:

我在 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);

我无法确定发生这种情况的原因。

【问题讨论】:

    标签: foreach stata


    【解决方案1】:

    你需要

    gen country = ""
    foreach x of varlist country_dummy1-country_dummy175 {
        local z : variable label `x'
        replace country = "`z'"  if `x'==1
    }
    

    请注意,Stata 不会将 "." 视为缺失的字符串值。您的错误是,如果您没有指定要使用 "" 的文字字符串,那么 Stata 将查找具有您指定名称的变量。在你的情况下,Afghanistan 将是一个合法的变量名,但你没有这样的变量:因此错误。由于其他原因,名称中带有空格的国家/地区也会出现问题,但该命令几乎总是会因为同样的原因而失败。

    这也应该有效:

    gen country = ""
    foreach x of varlist country_dummy1-country_dummy175 {
        replace country = "`: variable label `x''" if `x'
    }
    

    您可以在foreach 上拍quietly 以避免来自replace 的175 条消息。

    【讨论】:

    • 谢谢你,尼克!感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 2015-09-16
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多