You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 13:17:28