在命令[stata]中提取值标签

时间:2018-04-19 13:29:00

标签: label stata decode

我正在尝试创建一个新的string变量,它将string个数字(一个ID)的real与名称相结合。该名称是numeric变量,value label

示例数据可在以下网址找到:

* Input Data
clear
input long num id
1 689347
2 972623
end
label values num num
label def num 1 "Label A" 2 "Label B"

 +------------------+
 |     num       id |
 |------------------|
 | Label A   689347 |
 | Label B   972623 |
 +------------------+

我想要做的是创建string类型的689347 - Label A。只需在decode上使用num,然后按如下方式编写新的string即可轻松完成此操作:

tempvar numstr
decode num, gen(`numstr')
gen label = string(id) + " - " + `numstr'

 +-------------------------------------+
 |     num       id              label |
 |-------------------------------------|
 | Label A   689347   689347 - Label A |
 | Label B   972623   972623 - Label B |
 +-------------------------------------+

这已经非常简单,但有没有办法在一行中执行此操作,而没有decode命令?

例如:

gen label = string(if) + " " + string(num)

这样做的问题当然是,这只会给string real numvalue label数字值(1和2)。

this post中,您可以看到如何在if命令中引用value label

我的问题是:

有没有办法告诉Stata创建一个字符串并提取if($results){ $session->setId($results['Id']); } 而不是值?

2 个答案:

答案 0 :(得分:3)

如果您不想使用decode,那么这就是诀窍:

generate label = ""

forvalues i = 1 / 2 {
    replace label = string(id) + " - " + "`: label num `i''" in `i'
}

答案 1 :(得分:2)

我能做的最好的就是两条线。

decode num, generate(label)
replace label = string(id) + " - " + label