我有下面的Stata代码,生成下面的图。但是,我试图对Y轴上的值进行调整/排序,这是指不同收入组中的工人,以遵循与数据集相同的顺序。而不是将当前月收入<= 1.5千美元的人员排列为第5个而不是第一个收入组的当前订单。
number_of_workers income_bracket
24806 <= 1.5
31346 1.5-2.9
648409 3
389266 3.01-4.9
351963 5-9.9
271360 >= 10
收入方括号变量是字符串,我尝试将其转换为以下内容:
gen income_bracket_numeric = real(income_bracket)
但是,Stata将转换后的值视为缺少(。),但3是数字。有没有一种方法可以通过在不更改原始数据的情况下将收入范围设置为数字来处理?
preserve
keep if nationality=="nationals"
keep if period=="Q1_2020" | period=="Q4_2020"
graph hbar (mean) number_of_workers, over(income_bracket) over(quarter)
restore
我采纳了尼克的建议,我的代码如下所示:
input number_of_workers_q1 str8 income_bracket_q1
24806 "<= 1.5"
31346 "1.5-2.9"
648409 "3"
389266 "3.01-4.9"
351963 "5-9.9"
271360 ">= 10"
end
input number_of_workers_q4 str8 income_bracket_q4
25073 "<= 1.5"
29628 "1.5-2.9"
596767 "3"
442429 "3.01-4.9"
381794 "5-9.9"
273880 ">= 10"
end
gen order = _n
labmask order, values(income_bracket_q1)
graph hbar (asis) number_of_workers_q1 number_of_workers_q4, over(order)
label define order 1 "{&le} 1.5" 6 "{&ge} 10", modify
graph hbar (asis) number_of_workers_q1 number_of_workers_q4, over(order)
请注意,您的问题是有关调整分类轴的。使用graph bar
,graph hbar
并且graph dot
大小轴始终视为y轴,无论它是垂直还是水平。这样做是为了您可以在水平和垂直方向之间更改方向,而不必更改所有y
选项和所有x
选项。
下面是一个使用到做这件事labmask
从Stata的杂志。
clear
input number_of_workers str8 income_bracket
24806 "<= 1.5"
31346 "1.5-2.9"
648409 "3"
389266 "3.01-4.9"
351963 "5-9.9"
271360 ">= 10"
end
gen order = _n
labmask order, values(income_bracket)
graph hbar (asis) number_of_workers, over(order)
label define order 1 "{&le} 1.5" 6 "{&ge} 10", modify
graph hbar (asis) number_of_workers, over(order)
labmask
如果您没有按正确的顺序定义值标签,然后使用,就可以做到这一点encode
。
如上所述,您可以改进粗双符号<=
和>=
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句