|
匿名网友
|
楼主
匿名网友
发表于 2015-11-4 19:57:34
|AI写论文
经管之家送您一份
应届毕业生专属福利!
求职就业群
感谢您参与论坛问题回答
经管之家送您两个论坛币!
+2 论坛币
Stata在运行命令时一般会将执行结果自动加以保存,存储结果的内容实质上是局部宏、全局宏和矩阵等,其中e-class/r-class是最为常见的两类命令,并以e()和r()的形式存储:其中:e()存储模型估计(estimation)命令的运行结果(如:regress, logistic等,一直保留到下一模型的估计之前),r()存储一般命令(如:summarize即在执行更多命令之前所使用的命令)的运行结果,键入 ereturn list 和 return list可分别加以查看: | | 注:putexcel为Stata13起新增官方命令 | 以下以计算变量间线性相关系数为例,对putexcel的用法加以简介:- *version 13.1
- sysuse auto
- correlate foreign mpg
复制代码
由于correlate不是模型估计命令,因此使用return list查看
现使用putexcel将结果加以输出,其语法格式为: - putexcel excel_cell=(expression) … using filename [, options]
复制代码 由return list可以看出相关系数的计算结果被保存在了2*2的矩阵中,使用matrix list r(C)可加以查看:
现在借助putexcel命令将矩阵输出,并保存为corr.xlsx,即 - putexcel A1=matrix(r(C), names) using corr
复制代码
菜单操作:
File--->Export------>Results to EXCEL spreadsheet
注:在Stata14中步骤稍微不同:添加putexcel set- *version 14.1
- sysuse auto,clear
- correlate foreign mpg
- putexcel set corr.xlsx,replace
- putexcel A1=matrix(r(C))
复制代码
有些命令在运行时不存储执行结果,如tabulate,- sysuse auto
- tabulate foreign
复制代码 这时可借助matcell()和matrow()将Freq列值和行值(即Domestic和foreign,Car type实际为数值型变量)以矩阵形式保存:- tabulate foreign, matcell(freq) matrow(names)
复制代码
| - putexcel A1=("Car type") B1=("Freq.") C1=("Percent") using results, replace
- putexcel A2=matrix(names) B2=matrix(freq) C2=matrix(freq/r(N)) using results,modify
复制代码
对照实际二维表,可见所产生的这一表格非常粗略,无Cum列和Total行,car type变量值标签未显示,仅为0/1变量值(即matrix list names),而且单元格数值格式需要调整: 使用label和display修正: - *version 13.1
- sysuse auto
- tabulate foreign, matcell(freq) matrow(names)
- putexcel A1=("Car type") B1=("Freq.") C1=("Percent") D1=("Cum.") using results, replace
- local rows = rowsof(names)
- local row = 2
- local cum_percent = 0
- forvalues i = 1/`rows' {
- local val = names[`i',1]
- local val_lab : label (foreign) `val'
- local freq_val = freq[`i',1]
- local percent_val = `freq_val'/`r(N)'*100
- local percent_val : display %9.2f `percent_val'
- local cum_percent : display %9.2f (`cum_percent' + `percent_val')
- putexcel A`row'=("`val_lab'") B`row'=(`freq_val') C`row'=(`percent_val') ///
- D`row'=(`cum_percent') using results, modify
- local row = `row' + 1
- }
- 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调整单元格数值格式)
此外,可用tab2xl命令摆脱编辑上述代码的繁琐:特别是需产生多个变量的二维表
基本语法格式:
- tab2xl varname using filename, row(rownumber) col(colnumber) [replace sheet(name)]
复制代码 安装方法:- net install http://www.stata.com/users/kcrow/tab2xl
复制代码 对于上例只需输入以下代码,后打开table1.xlsx即可- sysuse auto,clear
- tab2xl foreign using tables1, row(1) col(1)
复制代码
|
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
|
|
-
总评分: 经验 + 100
学术水平 + 1
热心指数 + 1
信用等级 + 1
查看全部评分
|