查看原文
其他

Stata16新功能——同一个文档,不一样的布局

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:闫续文

文字编辑:李钊颖

技术总编:闫续文


 爬虫俱乐部将于2019年8月22日至28日湖北武汉举行为期一周的Stata编程技术定制培训,此次培训采用Stata16进行讲解,采取初级班和高级班分批次培训。课程通过案例教学模式,旨在帮助大家在短期内掌握Stata软件编程、金融计量知识和实证分析方法,使大家熟悉Stata核心的爬虫技术,以及Stata与其他软件交互的高端技术。目前正在火热招生中~

详细培训大纲及报名方式,请点击文末阅读原文呦~


在我们输出实证结果的时候,常常会有这样一个需求:有的表格比较长,我们较常使用纵向页面,而有的表格很宽,该页面横向放置则更为合适。但是,熟悉putdocx命令的人都会发现,当我们使用putdocx pagebreak进行换页操作的时候,往往并不能够实现纵向与横向页面共存于同一个word文档中,而Stata16则通过引入新命令putdocx sectionbreak解决了这个大难题。我们通过下面的综合案例来说明如何实现一文档,两布局

首先使用putdocx命令生成一页纵向布局的word文档,并输入文本内容,程序如下:

clear allcap mkdir E:/putdocxcd E:/putdocx! taskkill /F /IM WINWORD.EXE /T
putdocx begin, header(myheader1) //为文档添加名为myheader1的空白页眉,默认纵向布局putdocx paragraph, halign(center)putdocx text ("实证结果展示"), font("华文楷体",30,black) bold linebreak putdocx text ("Empirical Results"), font("Times New Roman",20,green) bold linebreak putdocx text ("StataClub"), font("黑体",20,black) bold linebreak putdocx text ("Email: "), font("Arial",20,blue) boldputdocx text ("statatraining@163.com"), font("Arial",20,blue) bold underline(single)
putdocx paragraph, toheader(myheader1) halign(center) //将以下生成的段落内容插入名为myheader1的页眉中putdocx text ("by 爬虫俱乐部") //生成文本并插入名为myheader1的页眉中
putdocx save mytable.docx, replaceshellout mytable.docx

时,我们得到了一页纵向布局的文本,如下所示:

接下来,我们在原文档后加上一页横向布局的内容,使用putdocx pagebreak进行换页操作,并在第2页中结合auto.dta数据,使用corr2docx命令生成price-foreign这些变量之间的相关系数矩阵,程序如下:

putdocx begin, landscape //横向页面布局putdocx pagebreak putdocx save mytable.docx, append
sysuse auto, clearcorr2docx price-foreign using mytable.docx, append landscape note("Spearman(Pearson) correlations appear above(below) the diagonal.")shellout mytable.docx

然而,我们发现,本应横向布局的第二页,却仍然是纵向布局,导致相关系数矩阵十分不美观,putdocx命令的landscape选项似乎并没有起到相应的作用,这是为什么呢?

其实,页面布局没有实现调整的原因,并不在于landscape选项,问题实际上出在了putdocx pagebreak上。在Stata15中,我们常常使用putdocx pagebreak来实现简单的换页操作,而该命令也确实向我们证明了,它真的仅仅只能进行换页的操作,对于横向与纵向的页面布局、页眉页脚等内容的修改,putdocx pagebreak全都无法实现。

针对Stata15putdocx存在的这一问题,Stata16putdocx进行了改进,引入了一个新的命令:putdocx sectionbreak,从而完美地解决了页面布局的调整问题,该命令的用法如下所示:

可以看到,putdocx sectionbreak命令不仅能够实现与putdocx pagebreak相同的操作,即生成新的页面,而且能够修改横向或纵向的页面布局以及页眉页脚等内容。

于是,我们在原有的纵向页面的基础上,使用putdocx sectionbreak命令,生成新的横向页面并修改页眉页脚内容,重新输出price-foreign这些变量之间的相关系数矩阵,程序如下:

putdocx begin putdocx sectionbreak, landscape header(myheader2) footer(myfooter2) pagenum(decimal, 1) //在文档的下一页重新添加一节内容,区别于putdocx pagebreak,可以修改以下页面的布局以及页眉页脚内容,前两页是纵向,第三页是横向putdocx paragraph, toheader(myheader2) halign(center) //将以下生成的段落内容插入名为myheader2的页眉中putdocx text ("Empirical Results") //生成文本并插入名为myheader2的页眉中putdocx paragraph, tofooter(myfooter2) halign(right) //将以下生成的段落内容插入名为myfooter2的页脚中putdocx pagenumber //生成页码并插入名为myfooter2的页脚中putdocx paragraph, halign(center)putdocx text ("此页面为横向布局。"), font("华文楷体",30,black) boldputdocx save mytable.docx, append
corr2docx price-foreign using mytable.docx, append landscape note("Spearman(Pearson) correlations appear above(below) the diagonal.")shellout mytable.docx

此时,mytable.docx文件中前两页是纵向布局,第三页是横向布局,并且我们修改了第三页页眉的内容,同时为第三页添加了页脚。

接下来,我们使用putdocx sectionbreak再来生成新的纵向页面,结合t2docx命令,输出变量price-length的分组均值t检验结果,程序如下:

putdocx begin putdocx sectionbreakputdocx paragraph, halign(center)putdocx text ("此页面为纵向布局。"), font("华文楷体",30,black) boldputdocx save mytable.docx, append
t2docx price-length using mytable.docx, append by(foreign) note(" *** p<0.01, ** p<0.05, * p<0.1")shellout mytable.docx

于是,有了putdocx sectionbreak,我们就可以根据表格的宽度自由地调整横向与纵向布局,并且还可以根据我们的需求,相应地修改不同页面的页眉与页脚。

对爬虫俱乐部的推文累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫!

往期推文推荐

 Stata16新功能之putdocx生成页眉页脚

 手持Python,斗图不输!

 万般进制千机变,Python一计乾坤定——利用Python来进行进制转换

        朝花夕拾——cnstock与cntrade强强联合

关于我们

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

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

投稿邮箱:statatraining@163.com

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


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存