1、用 Stata 做多个文件的合并在我们写论文处理数据时,通常会遇到我们需要的数据从国泰安中下载下来,会因为我们的数据超过 excel 的最大 65536 行的行数限制,而被分为两个或几个表,这时,我们需要对表进行纵向的合并,需要用到 append 命令;当我们需要从国泰安中下载的变量的数据在不同的板块,也就造成数据会出现在不同的表中,这时,我们需要横向合并各个表,当数据不能一一对应时,是不能通过复制粘贴将数据复制到一张表中,这时需要用 merge 命令。下面通过一些例子进行说明:1、纵向合并比如:我们从国泰安中公司研究系列CSMAR 中国上市公司财务报表数据库现金流量表中下载 2002 到 2
2、012 年的现金流量表,下载下来发现数据因为太多分为了两个表,这时,我们需要纵向合并这两个表,先分别将两个现金流量表读入到 Stata 中存为.dta 文件,再放到同一文件夹中,最后进行合并。如下:set more offcd C:UsersAdministratorDesktop财务数据(国泰安)use C:UsersAdministratorDesktop财务数据(国泰安)xjllb 改.dta ,clear#delimit ;append usingxjllb 改 1;sort Stkcd Accpersave xjllb 合并 ,replace合并结果,如图:数据超过了 65536,数
3、据合并成功。当需要合并的文件比较多时,特别是成千上百时,将文件名一一复制中程序中会比较麻烦,这时我们要用到 logout,先将文件全放在一个文件夹中,再将文件名输出到 excel 或 word 中,再将所有文件名复制到程序即可。例子如下:set more offcd C:UsersAdministratorDesktop财务数据2002-2012logout,replace save(myfile) excel word :diruse 2002.dta ,clear#delimit ;append using2003.dta2004.dta2005.dta2006.dta2007.dta20
4、08.dta2009.dta2010.dta2011.dta2012.dta;save 社保,replace;logout 出的文件名如下:将文件名复制到程序中即可2、横向合并比如:我们需要 2002-2012 年利润表和资产负债表的数据,先从国泰安中下载 2002-2012 年利润表和资产负债表的数据,数据也分别在两个表中,先纵向合并,存为 lrb 合并.dta 和 zcfzb 合并.dta,接下来做横向合并,如下:use “C:UsersAdministratorDesktop财务数据(国泰安) lrb 合并.dta“,clearuse “C:UsersAdministratorDesktop财务数据(国泰安) zcfzb 合并.dta“,clearcd “C:UsersAdministratorDesktop财务数据(国泰安)“merge m:n Stkcd Accper using “C:UsersAdministratorDesktop财务数据(国泰安)lrb 合并.dta“drop _m sort Stkcd Accpersave 合并数据,replace匹配结果,如下: