我无法完全掌握如何将标题的变量值标签插入图表。
例如,在sysuse auto
中,变量foreign
的值为0或1,其中0表示“Domestic”,1表示“Foreign”。
在下面的代码段中,我想使用循环绘制变量foreign
的每个类别的平均价格:
sysuse auto, clear
forvalues i=0/1{
local t = foreign[`i']
graph bar (mean) price if foreign == `i', ///
over(rep78, sort(price) descending) asyvars ///
title("`t'") name(p_`i', replace) nodraw
local graphs `graphs' p_`i'
}
gr combine `graphs'
但它甚至没有在标题中正确显示类别值。
我做错了什么?
答案 0 :(得分:2)
您的代码
local t = foreign[`i']
首先在观察0中将局部宏t
设置为变量foreign
的值,然后在观察1中设置:这些将分别丢失和0。
你想要的是与值 0和1相对应的值标签,你可以用
获得local t : label (foreign) `i'
将其交换到您的代码中,您的图表将分别标记为国内和国外。
替换命令的语法可能不熟悉;宏"扩展功能"在help extended_fcn
中描述。
答案 1 :(得分:0)
请注意这些graph
命令之一
sysuse auto, clear
graph bar (mean) price , ///
over(rep78, sort(price) descending) asyvars over(foreign)
graph bar (mean) price , ///
over(rep78, sort(price) descending) asyvars by(foreign)
自动使用值标签并直接生成组合图。这可能不是主要问题,但原始代码并不是一个很好的解决方案。