哈喽,诸君安。大家知道,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元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~ 文字编辑:司海涛 技术总编:刘贝贝 |
|