putexcel—从Stata到Excel

2017-05-17 河南大学 赵政轩 爬虫俱乐部 爬虫俱乐部


哈 喽,诸君安。大家知道,stata的运行结果一般储存在e-class(估计命令)和r-class(一般命令)中,你可以通过ereturn list 和return list命令列出储存结果,但这些结果只能在stata里面观察,有没有办法可以直接把这些结果导入到excel里面吗?回答是肯定的^ .^。putexcel就可以解决这个问题,今天小编就给大家介绍一下putexcel命令。

putexcel命令在stata14.2版本中进行了改进,本篇主要讲解putexcel在stata14中的用法,我们将在之后的推文中介绍stata14.2版本中putexcel的用法。另外,由于putexcel命令比较琐碎,我们将分成两篇给大家介绍。

一、putexcel基本语法结构

putexcel cellexplist using filename [, options]

1.cellexplist分位两部分:

(1)cell,指选定的excel的单元格范围;

(2)explist,指导入到excel的内容或结构。

2.filename,指excel文件存储的路径和名称。(不加路径,excell文件将保存在缺省路径下。)

3.[, options]

(1)modify----修改excel表格中的内容。

(2)replace----覆盖原有excel表格中的内容。

(3)sheet("sheetname" [, replace])----写一个名字为sheetname的excel工作表,若加上replace选择项,表示替换名称为sheetname的子表里面的内容和格式。

(4)colwise----把结果值(resultset values)以连续的列写入excel表格,否则以连续的行写入excel表格。结果值主要是指向量(scalar)、宏(macros)、矩阵(matrices)。

(5)keepcellformat----在写入数据的时候,已有工作表的单元格格式。

例子

·putexcel  A1=("爬虫俱乐部") using d:/table1, sh(“1”) modify 

其中,A1就是cell,表示excel表格中A1的位置(A1、a1均可,命令不区分大小写),“爬虫俱乐部”对应explist,表示导入到excell中的内容为“爬虫俱乐部”。d:/table1对应filename,表示excell文件的存储路径和名称为d:/table1。


二、将返回值导入到excel表格中

矩阵数据导入excel表格中

·cd D:\Stata14\爬虫俱乐部

·sysuse auto,clear

·reg price mpg rep78 headroom weight length

·return list

此时我们发现回归结果被储存在矩阵r(table)里,如下图所示:

但是这样的结果并不符合我们的数据处理习惯,变量名应该在左侧一列,统计量名称应该在上边一行,因此要对其进行转置,并且我们只需要前6行的信息。程序如下:

·matrix a = r(table) //把table矩阵放入a矩阵中。

·matrix a = a[1..6,1...]' //取a矩阵的前六行和所有的列,之后转置。

这样我们就把回归结果放在了a矩阵里面,然后借助putexcel命令就可以导出到excel表格里面啦^_^

·putexcel a1=matrix(a,names) using table1,sheet("matrix",replace) modify 

matrix(a,names)中的a表示把矩阵中的数值导入excel表中,names表示把矩阵的行和列的变量名称导入excel表中。也可以有matrix(a,rownames)或者matrix(a,colnames)只导入矩阵行的变量名或者列的变量名。

输出结果如下图所示:

好了,回归结果已经成功导入到excel表格里面了,但是看上去有点丑,有没有?如果你要用excell手工调整,你就太low了。前面讲到cellxplist里有很多对excell表格处理的功能,下面我们就来介绍几个:

                

设定小数点位数

·putexcel (b2:g5)=nformat("number_d2") using table1,sheet("matrix") modify

nformat(“指定单元格的数字格式”)具体类型请参考help文件,number_d2指保留小数点后两位。

结果如下: 

看着是不是美观一些了,但还不是很理想,怎么办呢?接下来还可以让表格内容居中,左标题右对齐,上标题中间对齐,再加上方框线。要用的命令有:

border("border", "style", [, "color"]) 分别表示边框线的位置、样式和颜色。

halign("h_alignment"),h_alignment(水平方向对齐horizontal alignment)的选项有left,center, right, fill, justify, merge 和distributed。

解释如下:

fill随着单元格的长度增加,表格中的内容重复性增加;

justify调整单元格的宽度与输入数据长度相同;

distributed无论单元格有多长,把输入的数据平均分散开,占完整个单元格的空间。

例如:

·putexcel  (a2:a5)=halign("right") /// a2到a5水平向右对齐

                 (a1:a5)=border("right","thin","black") ///a1到a5黑色右边框

                 (b1:g5)=halign("center") /// b1到g5垂直居中

                 (a1:g1)=border("bottom","thin","black") ///a1到g1黑色下边框

                 using table1,sheet("matrix") modify

结果如下:

此时,假设我们又要做另一个回归,并把结果按照上图的格式导入到excel表格里面,我们还需要在按照上面的步骤一步一步来吗?当然不用,我们只需要在选择项中加入keepcellformat即可。

例如:

·reg price rep78 mpg trunk

·matrix b=r(table)

·matrix b=b[1..6,1...]'

·putexcel a1=matrix(b,names) using table1,sheet("matrix") modify ·keepcellformat

结果如下,表格格式和之前一样没有变化。


向量数据导入excel

·sysuse auto,clear

·sum price

·return list

·putexcel (a1:b1)=halign("merge") a1=("price统计值") a2=rscalarnames b2=rscalars using table1,sheet("scalars",replace) modify

·putexcel (a1:b1)=halign("merge") a1=("price统计值") a2=rscalarnames b2=rscalars using table1,sheet("scalars",replace) modify colwise

其 中rscalarnames是r-class(一般命令)标量名称,rscalars为r-class标量对应的值(加上colwise,在excel里 面横向显示的结果)。这只是结果值的一种情况,其他种类如下:其中e*表示储存e-class(估计命令)结果值的所有scalars(向量)、 macros(宏)和matrices(矩阵);r*表示储存r-class(一般命令)结果值的所有scalars、macros和matrices。


以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~

                     文字编辑:司海涛

技术总编:刘贝贝



往期推文推荐:

1.高校学术大神:你的导师上榜了吗?

2.中国高校财经、管理与综合类期刊灌水排行榜

3.关于RTF你不知道的命令之番外篇

4.免费事件研究,一片片从邮局寄来

5.免费的股价同步性,一片片从邮局寄来

6.Stata叫你回家听音乐了!

7.一言不合就用stata写邮件(Outlook/Foxmail)

8.听说你想知道怎么用stata画地图?

9.I have a Stata, I have a python

10.I have a Stata, I have a Python之二——pdf转word




关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

欢迎关注爬虫俱乐部

微信扫一扫
关注该公众号