如何在Stata中计算各列求和占另一列总和的百分比?
Stata中计算列总和占比的方法
根据你的需求,这里提供两种常见的占比计算方案,对应不同统计场景:
场景1:计算各pop列的整体总和占所有total pop总和的比例
这种方式得到的是pop1/pop2/pop3/pop4群体在整体中的占比,步骤如下:
* 计算total pop列的总和,存入全局宏 summarize total_pop, meanonly global overall_total = r(sum) * 循环计算各pop列的总和并生成占比变量 foreach var in pop1 pop2 pop3 pop4 { summarize `var', meanonly gen `var'_overall_pct = r(sum) / $overall_total * 100 } * 查看结果(所有行占比数值相同,取第一行即可) list Spi pop1_overall_pct pop2_overall_pct pop3_overall_pct pop4_overall_pct in 1
场景2:计算每行中各pop列占该行total pop的比例
这种方式得到的是每个Spi分组内,各pop群体的占比分布,代码更简洁:
* 循环生成每行的占比变量 foreach var in pop1 pop2 pop3 pop4 { gen `var'_row_pct = `var' / total_pop * 100 } * 查看所有结果 list Spi pop1 pop2 pop3 pop4 total_pop pop1_row_pct pop2_row_pct pop3_row_pct pop4_row_pct
关于你尝试的total()命令
Stata中total()是egen函数的参数,可用来生成列总和变量,也能实现场景1的需求:
* 生成各列的总和变量 egen total_pop1 = total(pop1) egen total_pop2 = total(pop2) egen total_pop3 = total(pop3) egen total_pop4 = total(pop4) egen total_totalpop = total(total_pop) * 计算占比 gen pop1_pct = total_pop1 / total_totalpop * 100 gen pop2_pct = total_pop2 / total_totalpop * 100 gen pop3_pct = total_pop3 / total_totalpop * 100 gen pop4_pct = total_pop4 / total_totalpop * 100
内容的提问来源于stack exchange,提问作者Saidbf
相关产品推荐
相关产品推荐

