我正在尝试创建一个新的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
num
个value label
数字值(1和2)。
在this post中,您可以看到如何在if
命令中引用value label
。
我的问题是:
有没有办法告诉Stata创建一个字符串并提取if($results){
$session->setId($results['Id']);
}
而不是值?
答案 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