Stata中如何将带值标签的数值变量与ID合并为新字符串变量
在Stata中生成「ID - 标签名」格式的字符串变量
我来帮你搞定这个需求!要把带值标签的数值变量和ID合并成你想要的格式,关键是先把值标签提取成字符串,再和转成字符串的ID拼接,具体操作如下:
完整代码示例
clear input long num id 1 689347 2 972623 end label values num num label def num 1 "Label A" 2 "Label B" * 提取num的数值标签为字符串变量 decode num, gen(num_label) * 拼接ID(转字符串)和标签,生成目标变量 gen id_label = string(id) + " - " + num_label * 查看最终结果 list id num id_label
运行结果
+-------------------------------+
id num id_label 689347 Label A 689347 - Label A 972623 Label B 972623 - Label B +-------------------------------+
关键步骤说明
decode命令的作用:如果直接用num变量拼接,Stata会用它的原始数值(1、2)而不是值标签(Label A、Label B),所以必须用decode num, gen(num_label)把值标签转换成对应的字符串,这样才能得到正确的标签文本。- 字符串拼接:
string(id)把数值型的id转换成字符串类型,然后用+运算符把「ID字符串」、「分隔符 -」、「标签字符串」三个部分拼接成完整的目标格式。
如果你追求简洁,也可以把两步合并成一行代码(可读性稍弱但功能一样):
gen id_label = string(id) + " - " + decode(num)
内容的提问来源于stack exchange,提问作者Aaron Wolf




