楼主: 匿名
7426 3

[Stata] [Stata]报表呈现(5)putexcel [推广有奖]

匿名网友
楼主
匿名网友  发表于 2015-11-4 19:57:34 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

[Stata] 报表呈现(5)  putexcel

Kevin Crow, Senior Software Developer

转自http://blog.stata.com/2013/09/25/export-tables-to-excel/

      Stata在运行命令时一般会将执行结果自动加以保存,存储结果的内容实质上是局部宏、全局宏和矩阵等,其中e-class/r-class是最为常见的两类命令,并以e()和r()的形式存储:其中:e()存储模型估计(estimation)命令的运行结果(如:regress, logistic等,一直保留到下一模型的估计之前),r()存储一般命令(如:summarize即在执行更多命令之前所使用的命令)的运行结果,键入 ereturn list return list可分别加以查看:

       注:putexcel为Stata13起新增官方命令
以下以计算变量间线性相关系数为例,对putexcel的用法加以简介:
  1. *version 13.1
  2. sysuse auto
  3. correlate foreign mpg
复制代码

1.JPG




由于correlate不是模型估计命令,因此使用return list查看


2.JPG


现使用putexcel将结果加以输出,其语法格式为

  1. putexcel excel_cell=(expression) … using filename [, options]
复制代码
return list可以看出相关系数的计算结果被保存在了2*2的矩阵中,使用matrix list r(C)可加以查看:

3.JPG


现在借助putexcel命令将矩阵输出,并保存为corr.xlsx,即

  1. putexcel A1=matrix(r(C), names) using corr
复制代码

4.JPG


菜单操作:
File--->Export------>Results to EXCEL spreadsheet
             1.JPG
注:在Stata14中步骤稍微不同:添加putexcel set
  1. *version 14.1
  2. sysuse auto,clear
  3. correlate foreign mpg
  4. putexcel set corr.xlsx,replace
  5. putexcel A1=matrix(r(C))
复制代码


有些命令在运行时不存储执行结果,如tabulate,
  1. sysuse auto
  2. tabulate foreign
复制代码
这时可借助matcell()和matrow()将Freq列值和行值(即Domestic和foreign,Car type实际为数值型变量)以矩阵形式保存:
  1. tabulate foreign, matcell(freq) matrow(names)
复制代码

5.JPG

  1. putexcel A1=("Car type") B1=("Freq.") C1=("Percent") using results, replace
  2. putexcel A2=matrix(names) B2=matrix(freq) C2=matrix(freq/r(N)) using results,modify
复制代码

7.JPG

对照实际二维表,可见所产生的这一表格非常粗略,Cum列和Total行,car type变量值标签未显示,仅为0/1变量值(即matrix list names),而且单元格数值格式需要调整:

使用labeldisplay修正:

  1. *version 13.1
  2. sysuse auto
  3. tabulate foreign, matcell(freq) matrow(names)

  4. putexcel A1=("Car type") B1=("Freq.") C1=("Percent") D1=("Cum.") using results, replace

  5. local rows = rowsof(names)
  6. local row = 2
  7. local cum_percent = 0

  8. forvalues i = 1/`rows' {

  9.         local val = names[`i',1]
  10.         local val_lab : label (foreign) `val'

  11.         local freq_val = freq[`i',1]

  12.         local percent_val = `freq_val'/`r(N)'*100
  13.         local percent_val : display %9.2f `percent_val'

  14.         local cum_percent : display %9.2f (`cum_percent' + `percent_val')

  15.         putexcel A`row'=("`val_lab'") B`row'=(`freq_val') C`row'=(`percent_val') ///
  16.                 D`row'=(`cum_percent') using results, modify
  17.         local row = `row' + 1
  18. }

  19. putexcel A`row'=("Total") B`row'=(r(N)) C`row'=(100.00) using results, modify
复制代码

第1-4行填充A1-D1单元格,10-25行填充第2/3行单元格,第6行为rowsof()函数获取names的行数:
如果12行中返回names矩阵(2*1)中第一行第一列即0,
那么13行将对应变量值标签中的foreign否则对应domestic
第27行填充A4 B4 C4单元格
注:(可附加选项keepcellformat调整单元格数值格式

8.JPG


此外,可用tab2xl命令摆脱编辑上述代码的繁琐:特别是需产生多个变量的二维表
基本语法格式
  1. tab2xl varname using filename, row(rownumber) col(colnumber) [replace sheet(name)]
复制代码
安装方法:
  1. net install http://www.stata.com/users/kcrow/tab2xl
复制代码
对于上例只需输入以下代码,后打开table1.xlsx即可
  1. sysuse auto,clear
  2. tab2xl foreign using tables1, row(1) col(1)
复制代码

10.JPG





二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Stata EXCEL exce tata xcel summarize Software return 模型

已有 1 人评分经验 学术水平 热心指数 信用等级 收起 理由
2010517155lpq + 100 + 1 + 1 + 1 精彩帖子

总评分: 经验 + 100  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

本帖被以下文库推荐

沙发
2010517155lpq 学生认证  发表于 2015-11-6 09:48:27
谢谢分享
已有 1 人评分论坛币 热心指数 收起 理由
niuniuyiwan + 10 + 1 感谢支持

总评分: 论坛币 + 10  热心指数 + 1   查看全部评分

藤椅
niuniuyiwan 在职认证  发表于 2015-11-6 15:55:00
2010517155lpq 发表于 2015-11-6 09:48
谢谢分享
谢谢,感谢支持!
已有 1 人评分经验 收起 理由
2010517155lpq + 10 精彩帖子

总评分: 经验 + 10   查看全部评分

板凳
lishishishi 发表于 2019-5-2 12:27:10
为什么显示using not allowed 呢

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-26 07:50