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

如何在Stata中查看整数形式加权频率并调整百分比为1位小数

在Stata中格式化加权表格输出(频率整数、百分比1位小数)

针对你处理DHS数据集时,希望将tab sp_age [iw=wt]的输出调整为频率取整、百分比保留1位小数的需求,以下是几种可行方案:

方案1:使用table命令(Stata 17及以上版本)

table命令支持直接自定义统计量的显示格式,操作最简洁:

table sp_age [iw=wt], ///
    statistic(freq) statistic(percent) statistic(cumpct) ///
    format(freq %12.0f percent %5.1f cumpct %5.1f) ///
    title("Husband/Partner's Age Distribution (Weighted)")
  • statistic(freq/percent/cumpct):指定输出频率、百分比、累计百分比
  • format(...):分别为三个统计量设置格式:%12.0f表示整数频率,%5.1f表示保留1位小数的百分比

方案2:适配旧版Stata(Stata 16及以下)

如果你的Stata版本不支持table命令,可通过矩阵处理+自定义数据集实现:

  1. 提取加权后的统计结果到矩阵:
tab sp_age [iw=wt], matcell(raw_freq) matrow(age_groups)
tab sp_age [iw=wt], matcell(raw_pct)
  1. 处理矩阵数值(频率取整、百分比保留1位小数):
matrix clean_freq = round(raw_freq, 1)
matrix clean_pct = round(raw_pct * 100, 0.1)
  1. 将矩阵转换为数据集并添加累计百分比:
clear
svmat clean_freq, names(freq)
svmat clean_pct, names(pct)
gen agegrp = ""
local group_num = rowsof(age_groups)
forvalues i=1/`group_num' {
    local grp_val = age_groups[`i',1]
    replace agegrp = "`grp_val'" in `i'
}
// 添加总计行
set obs `=group_num+1'
replace agegrp = "Total" in `=group_num+1'
replace freq1 = sum(freq1) in `=group_num+1'
replace pct1 = 100 in `=group_num+1'
// 计算累计百分比
gen cum_pct = sum(pct1) in 1/`group_num'
replace cum_pct = 100 in `=group_num+1'
// 设置显示格式
format pct1 cum_pct %3.1f
  1. 格式化输出结果:
list agegrp freq1 pct1 cum_pct, noobs clean title("Weighted Age Distribution")

方案3:使用estpost+esttab(适合导出表格)

如果你需要将结果导出为文本/表格,esttab工具能灵活控制格式:

* 未安装estout的话先执行:ssc install estout
estpost tab sp_age [iw=wt]
esttab, ///
    cells(freq(fmt(%12.0f)) pct(fmt(%5.1f)) cum(fmt(%5.1f))) ///
    title("Husband/Partner's Age (Weighted)") ///
    nonumber nomtitle noobs

内容的提问来源于stack exchange,提问作者MD NAHID HASSAN NISHAN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 03:25:59