文件合并你不行,mergemany来帮宁

一、导论

在Stata中进行数据处理时,经常会涉及到文件的合并。在之前的推文中,我们介绍了多个文件纵向合并的命令——openall,运用起来方便快捷。今天就为大家介绍文件横向合并的命令——mergemany,一起往下看吧~

二、mergemany的语法

mergemany是一个可以用于合并多个文件的外部命令,初次使用需要安装,安装命令为:
ssc install mergemany
mergemany的语法结构为:

①列出完整文件名进行文件的一对一合并:

mergemany 1:1 filename1 filename2..., match(varlist) [options]
②当前目录下的所有文件进行一对一合并:
mergemany 1:1 all, match(varlist) all [options]
③使用文件名的数字后缀进行文件的一对一合并:
mergemany 1:1 fileprefix, match(varlist) numerical(numlist) [options]
其中[options]选项有:
match(varlist) :合并文件时按此变量进行匹配,这个选项是必须的。
numerical(numlist) :使用文件名的数字后缀进行文件合并时使用。
all:合并当前目录下的所有文件时使用,不能与numerical(numlist)选项一起使用。
keep:保存当前内存中的数据集,同时将当前内存中的所有文件进行合并;在这种情况下,建议使用 saving(filename)选项。
saving(filename):将合并中生成的文件另存为filename.dta;建议通过keep保存内存中的数据集。
verbose:创建一个变量来标记每个单独合并的合并结果;默认情况下变量为_merge_filename。
import(filetype):此选项可以直接导入和合并非.dta文件。filetype显示的是正在导入的数据类型(例如.csv,.raw)。使用.dta文件时,不应使用此选项。
inoption(options) :允许在导入数据时指定insheet选项。可以使用insheet中可用的任何选项。只有通过import(filetype)导入时,才使用此选项。

三、mergemany的运用

举几个小例子加深理解吧:
①列出完整文件名

我们经常需要对已经下载好的财务数据按照证券代码和年份进行合并,我们以上市公司的ROA和ROE指标为例进行演示。首先,我们需要将已下载好的excel文件转化为dta格式的文件。

ROE.xlsx数据如下:
将ROE.xlsx转化为ROE.dta:
clear allimport excel using "ROE.xlsx",first //first选项是将表格第一行变为表头gen year =year(会计年度) //生成新的变量,只保留会计年度中的年份drop 会计年度rename 证券代码 stkcdkeep in 1/20 //保留前20行save "ROE.dta",replace
ROA.xlsx数据如下:
将ROA.xlsx转化为ROA.dta:
import excel using "ROA.xlsx", clear firstdestring year ROA,replace //将字符型数据转化为数值型数据keep in 1/20save "ROA.dta",replace
托宾Q值A.xlsx数据如下:

将托宾Q值A.xlsx转化为托宾Q值A.dta:
import excel using "托宾Q值A.xlsx", clear firstkeep in 1/20save "托宾Q值A.dta",replace
接下来用mergemany对ROA和ROE两个表进行合并。
mergemany 1:1 ROE ROA,match(stkcd year)
通过这个命令,我们就将这两个表横向合并在了一起。
②当前目录下的所有文件执行1:1合并
mergemany 1:1 all,match(stkcd year) all
同时,如果想要将合并后生成的数据保存为新的文件——财务数据.dta,则可以使用saving(filename)选项。
mergemany 1:1 all,match(stkcd year) all saving(财务数据)
③利用auto文件夹中文件的数字规则性执行1:1合并:
clear allmkdir auto //创建一个新目录(文件夹)cd auto //改变工作目录webuse autosize,clearsave auto1,replacelist
可以看到auto1中的数据是六个汽车品牌的weight和length指标。
webuse autoexpense,clearsave auto2,replacelist
auto2中的数据是关于五个汽车品牌的的price和mpg指标。
mergemany 1:1 auto, match(make) numerical(1(1)2)
使用mergemany,两个文件合并在了一起,但由于auto1与auto2数据个数不同,因此合并后会出现缺失值。
以上就是今天的全部内容啦,如果对你有帮助的话,别忘了点个赞呀,加个关注咯,转载、打赏都可以呦~(ps:后台回复mergemany可获得相关数据呦~)
(0)

相关推荐