如何在Stata中创建并导出分组年度百分比变动表?
Stata表格导出与美化解决方案
我有2000-2011年受访者的收入、股票、债券及退休账户调查数据,受访者被分为4组。需要为每组生成各变量的年度百分比变动表,并导出为Word或PDF格式。目前编写的代码能在Stata内显示表格,但不知道如何导出、重命名变量及美化表格。
当前使用的代码:
//dataset imported here collapse (mean) stocks bonds income retacct, by(group year) foreach x of varlist stocks - retacct{ bysort group (year): gen d_`x' = (`x'- `x'[_n-1]) / `x'[_n-1] * 100 } list year d_* if group == 1, sep(0) list year d_* if group == 2, sep(0) list year d_* if group == 3, sep(0) list year d_* if group == 4, sep(0)
1. 重命名百分比变动变量
把自动生成的d_stocks等变量改为直观的中文名,可手动或批量操作:
手动重命名
rename d_stocks 股票年变动率 rename d_bonds 债券年变动率 rename d_income 收入年变动率 rename d_retacct 退休账户年变动率
批量循环重命名(高效版)
local old_vars d_stocks d_bonds d_income d_retacct local new_vars 股票年变动率 债券年变动率 收入年变动率 退休账户年变动率 foreach i of numlist 1/4 { rename `:word `i' of `old_vars'' `:word `i' of `new_vars'' }
2. 美化并导出表格
推荐用Stata的estout或putdocx工具,替代list命令生成规范表格并直接导出。
方法一:用esttab生成可导出的统计表格
先安装estout包(首次使用):
ssc install estout
按分组生成并导出RTF(可直接用Word打开,也支持转PDF):
forvalues g=1/4 { // 提取分组数据并计算统计量 tabstat 股票年变动率 债券年变动率 收入年变动率 退休账户年变动率 if group==`g', by(year) stat(mean) columns(statistics) // 导出为RTF格式,设置表格样式 esttab . using "分组`g'年度变动表.rtf", replace label /// title("第`g'组各变量年度百分比变动表") /// nonumbers noobs nomtitle collabels("年度变动率(%)") }
方法二:用putdocx生成Word格式表格(Stata 15+支持)
先安装putdocx包:
ssc install putdocx
生成带边框、标题的规范Word文档:
forvalues g=1/4 { putdocx begin // 添加表格标题 putdocx paragraph, style(Title) putdocx text ("第`g'组各变量年度百分比变动表") // 生成带边框的表格 putdocx table tbl = data(year 股票年变动率 债券年变动率 收入年变动率 退休账户年变动率) if group==`g', /// varnames border(all, single) // 保存文档 putdocx save "分组`g'年度变动表.docx", replace }
方法三:快速导出CSV(适合自行调整格式)
如果需要灵活调整表格样式,可先导出为CSV再导入Word:
forvalues g=1/4 { preserve keep if group==`g' keep year 股票年变动率 债券年变动率 收入年变动率 退休账户年变动率 outsheet using "分组`g'变动数据.csv", replace comma restore }
内容的提问来源于stack exchange,提问作者Toxinator
相关产品推荐
相关产品推荐

