在 Stata 中为来自 R 代码的分类变量创建百分比条形图

Create percentage bar chart in Stata for categorical variables from R code

我是 Stata 的新手,正在尝试在那里重新创建我的 R 代码。我有两个要绘制的因子变量。一个是费用,取值 "Afs 2500-5000" "Afs 5000-7500" "Afs 7500-10000" "Less than Afs 2500" "More than Afs 10000".

另一个是教育水平,取值"High school" "Madrassa" "No schooling" "Other" "Primary school" "Secondary school"

为了绘制带百分比的条形图,我使用了

educ <- with(data, table(expenses, education))
education <- round(prop.table(educ,2)*100,digits=0)
barplot(prop.table(education,2)*100,
        xlab='Education level',ylab='Percentages',main="Monthly expenses by education status",beside=T, col = ramp.list,
        legend=rownames(education), args.legend
        = list(x = "topleft", cex=0.3))

这给了我这个:percentage bar chart

我如何在 Stata 中做同样的事情?似乎没有简单的方法来像 R 中那样用 as.factor 重新编码变量。我得到的最接近的是:

encode Education, generate(educ)
tabulate Expenditure educ, col

table Expenditure, stat(fvpercent educ) 不行。

R 中 as.factor 的等价物是什么?我如何生成像我上面介绍的那样的可视化效果?谢谢!

在没有数据的例子中:

首先请注意,您的图表很乱,因为预测变量和结果的类别都是按字母(字母数字)顺序排列的。例如,费用变量应以 "Less than Afs 2500" 开头,教育变量应以 "No schooling" 开头,然后是 "Primary School"

关于主要问题:在 Stata 中,您可以使用 graph bar 或任何包装它的命令。

这个例子是可重现的:

sysuse auto, clear 

set scheme s1color 

ssc install catplot 

catplot rep78, over(foreign) percent(foreign) recast(bar) ///
asyvars bar(1, color(red)) bar(2, fcolor(red*0.4) lcolor(red)) ///
bar(3, fcolor(blue*0.2) lcolor(blue)) bar(4, fcolor(blue*0.6) lcolor(blue)) ///
bar(5, color(blue)) legend(row(1)) ytitle(% of Domestic or foreign) yla(, ang(h))