送你一只粘合剂——用openall命令合并数据

2016-10-18 薛原 爬虫俱乐部 爬虫俱乐部

诸君安,我是爬虫酱。

一张纸折过,就有印。

一颗心碎过,就有痕。

一份数据被拆分过……

就找stata!今天,爬虫酱给大家一只粘合剂,合并的数据,天衣无缝。我们在之前的推文中介绍了用宏扩展函数对一个文件夹中的文件进行批量处理。比如我从国泰安上下载了上市公司的资产负债表的excel文件,用宏扩展函数分别导入并且保存成dta文件。

clear

set more off

cd "G:\资产负债表"

local files: dir "." file "*.xls"

foreach file in `files' {

    import excel using `file',first case(lower) clear

    save "`file'.dta",replace

}


这样,我们就得到了五个dta文件,接下来我们要做的就是把五个dta文件纵向合并在一起。该用什么办法呢?我们很容易想到可以再用一次宏扩展函数,使用append命令将所有的dta文件纵向合并。

clear

foreach file in `files' {

    append using"`file'.dta"

}

这 样,我们就可以把这些数据纵向合并了。可是,除了这个方法以外,有没有别的方法能够帮我们完成这个任务呢?这时候,我们就可以用到openall命令。在 使用这个命令之前,我们还是需要先安装。这个命令可以帮助我们将dta格式或者csv格式的数据纵向合并在一起。例如我们使用宏扩展函数将资产负债表的数 据从excel转成dta格式的文件后,就可以使用这个命令进行合并。而且只需要一个非常简洁的命令就可以了。

ssc install openall

openall *


*代 表的就是当前工作路径下面的所有dta文件,这样一个简单的命令我们就把所有五个dta文件,280158个观测值纵向合并在了一起。我们也可以通过 directory()选项来定义我们要合并的文件所在的路径,不定义这个选项,默认情况下是当前的工作路径。我们还可以通过 storefilename()这个选项新生成一个变量,显示某条观测值的来源文件。

现 在加入我们把资产负债表、现金流量表、利润表都放在了一个文件夹里面,通过宏扩展函数共保存了十几个dta文件,这个时候我们如果直接用openall *的话就会把所有的dta文件纵向合并在一起,这当然不是我们想要的结果。那么我们该怎么才能挑出资产负债表dta文件合并在一起呢?这个时候我们需要观 察文件名。资产负债表的文件名是fs_combas,利润表的文件名是fs_comins,现金流量表的文件名是fs_comscfd。我们可以根据文件 名的规律,合并特定的数据。

openall *bas*

用这样一个简单的命令就能把资产负债表的五个dta文件从十几个文件中挑选出来纵向合并了。同样的方法,我们也可以把现金流量表和利润表的文件挑选出来合并在一起。

除了合并dta文件,openall命令还可以通过定义insheet选项来合并csv格式的文件。例如,我们现在下载了四只股票的历史交易数据的csv文件,我们现在要用openall命令将这四个csv文件合并在一起。


openall *, insheet



这样,我们就把四只股票的历史交易数据纵向合并在一起了。

好啦,说完了。看官且留步,今天我们的公众号开通打赏功能啦~说得好就赏个铜板呗~有钱的捧个钱场,有人的捧个人场,最后的赞和赏,总有一个适合您,爬虫酱打滚求赏~

我们团队原来的微信公众号是“数据处理援助中心”,现在正式搬家到“爬虫俱乐部”,欢迎关注。新的公众号开始,我们推出有问必答栏目,对您提出的问题,我们会尽力回答,并通过推文的形式进行发布。我们也欢迎各位粉丝向公众号投稿。

(编辑@梅洁瓷傲)

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

投稿邮箱:xueyuan19920310@163.com

投稿要求:

1)必须原创,禁止抄袭;

2)必须准确,详细,有例子,有截图;

注意事项:

1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。

3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答

长按二维码关注呀

微信扫一扫
关注该公众号