第五章数据的分组、合并与转换本章主要内容5.1.数据合并的类型和原理5.2.纵向合并(append)——增加样本量5.3.横向合并(merge)——增加变量5.4.数据的转换5.5.数据的分组5.6.数据的集合5.1.数据合并的类型和原理•内容相似的独立调查:城乡;性别•不同层次、不同年份的调查•母亲的数据与子女的数据•低层数据的高层特征为什么需要合并数据•一个内容相同或类似的调查分别在城、乡进行,或在男性和女性间进行。数据也在不同地方由不同人员录入。若需比较城乡之间、性别之间在某些方面的差异,最好的方法之一就是将城乡样本合二为一,将男性和女性样本合二为一•个体居住的社会环境可能影响他们的日常生活和行为。越来越多的社会调查除了关注个体本身的差异外,也开始关注他们的生存环境,包括家庭和社区背景等。家庭寓于社区中,个人寓于家庭中。数据分析时,需要将分别录入的数据合并成包括不同层次、不同内容的数据数据合并的类型•增加观察值(即样本量):纵向合并–若有一个城市儿童数据和一个农村儿童数据,二者的内容基本相同–可进行独立分析或整合后作为整体样本的次样本分析•增加变量:横向合并–若有一个社区数据和一个家庭数据,家庭寓于社区中,若想将二者合二为一,从而使家庭数据包含社区的基本特征,则需将数据进行横向合并数据合并的窗口路径数据合并的几个主要概念•主要数据(Masterdataset):指当前在Stata界面的数据,又称当前数据(currentdataset)、窗口数据或记忆空间数据•使用数据(usingdataset):指当前不在Stata界面、但行将被合并到当前数据的数据,也称辅助数据。该名词主要用于数据的合并•关键变量(Keyvariables),也称标识符(identifiers)或合并变量(matchvariables):横向合并的专有词汇,用来合并两个数据的变量。该变量必须同时存在于主要数据和使用数据中,且在使用前必须排序。主要变量可以是一个,也可以是两个或多个扩大记忆空间的容量•由于合并数据将增加当前数据的观察值或(和)变量,扩大数据的占用空间,故在进行合并前,首先要确定是否有足够的记忆空间允许数据的合并•否则,可能遇到错误提示•Caution!MergingandappendingbothadddatatothedataalreadyinStata'smemory.ItiseasytoaskStatatoputmoredatainmemorythanyou'veallowedroomfor.Addtogetherthesizesofallthefilesyouwanttomergeorappendbeforeyoucombinethem,clearandsetmemoryifnecessary,thencombinethefiles.Ifnot,youmaygetthemessageNoroomtoaddmorevariables/observations.5.2.纵向合并(append)——增加样本量原理•将保存在某个盘符中的stata数据文件的内容追加到当前数据窗口的后面,生成一个新数据•在绝大部分的纵向合并中,用于两个数据库的格式和变量基本类似,但观察值却未必一样•观察值可以是独立的,来自于同一调查的不同样本,也可能不是完全独立的,来自于不同调查时间的相同样本•合并后,数据的变量基本不变,但观测个案增加了•该方法可以将两个或多个数据文件进行上下对接,简单明了,不易出错方法窗口路径Data–Combinedatasets–Appenddatasets(纵向合并数据的对话框)命令.appendusing[使用数据的路径和名称]①②①:纵向合并数据的基本命令②:使用数据的路径和名称(目前记忆空间的数据是主要数据)•也可以只读入使用数据中的部分变量.appendusing[使用数据的路径和名称],keep[变量名]①①:在合并使用数据时,只保留keep后面指定的变量one.dtaabC123456+two.dtaabC789101112131415.useone,clear.appendusingtwo合并后的数据abc123456789101112131415几点说明(I)•使用纵向合并的场合–纵向追踪调查–内容相同的调查在不同地区由不同人群完成•几点说明:–无需排序数据,因为无需按照任何标识符(identifier)进行各并,而只是将两个数据上下对接到一起–进行纵向合并时,Stata的log文件往往提示说,标签已经定义了。可以忽略几点说明(II)•不同数据中,内容相同的变量需要有同样的名称。故在合并以前,分别描述数据:–若两个文件的变量相同、名称也相同,合并后,新文件的变量数应该与合并前任何一个数据的变量数目一致–若每个文件都有一些独特的变量,但相同变量的名称是一样的,则新文件的变量数应该多于合并前任何一个数据的变量数(keep)–若每个文件的变量数目相同、变量包含的内容也相同,但变量的名称却不同,合并后,变量数目也会多出来,且需给内容相同、但名称不同的变量更名5.3.横向合并(merge)——增加变量场合•不同层次数据:母亲(或家庭或社区)与儿童数据–母亲是儿童的母亲,家庭是儿童的家庭,社区是儿童居住的社区–不同层次数据合并;低层次数据寓于高层次数据中•配对数据:妻子与丈夫、兄弟姊妹–同层数据合并•纵向追踪调查:不同时期的调查数据–大部分不同时期的调查对象是相同的–可以是单层次、也可以是不同层次数据的合并,以调查的内容而异•其它场合原理•从一个数据库中提取一些变量到另一个数据库中,故横向合并也就是变量的合并–将盘符文件的内容连接到当前数据编辑窗口的右边,形成新数据–新数据的变量增加,但观察个案可以不变–实际上是将两个数据文件,按照个案对应进行左右对接•实现数据文件的横向合并的前提是,主要数据和使用数据必须有一个(或多个)相同的关键变量•横向合并中,除关键变量外,其它变量的名称都不能相同•若两个数据包含其它的同名变量,则使用数据中的变量数值将被主要数据的同名变量数值取代one.dtaidaB11011212133141551617masterdata_merge==1+two.dtaidd118319420usingdata_merge==2=合并结果idaBd_merge1101118321213.1314151934..20251617.1_merge==3(合并了)_merge==1(主要数据)_merge==2(使用数据)窗口路径•Data–Combinedatasets–Mergetwodatasets(Mergemultipledatasets)•对话框及其解释–One-to-oneonkeyvariables(利用关键变量进行一对一的合并)–One-tomanyonkeyvariables(uniquekeyfordatainmemory)(利用记忆空间的关键变量进行一对多的合并)–Many-to-oneonkeyvariables(uniquekeyfordataondisk)(利用使用数据的关键变量进行一对多的合并)–One-to-onebyobservation(一对一观察值的合并)选项对话框1.Keepthefollowingvariables:(Ifnotspecified,allvariablesarekept)2.Specifynameofnewvariabletomarkresultofmerge:3.Donotcopyvaluelabledefinitionfromfile4.Donotcopynotesfromfile5.Replacemissingdatainmemorywithdatafromfile6.Replacenonmissingdatainmemorywithdatafromfile7.Dropobservationsindatasetondiskthatdonotmatch第1、3、4项都与append命令下的选项相同;其它几项是merge命令独特的选项横向合并与纵向合并的异同•横向数据合并的基本命令是merge。利用该命令,将新变量添加到当前数据中•与append命令一样,在合并数据前,首先需要有足够的记忆空间,承载新增加的内容•注意:横向数据合并中,主要数据和使用数据都必须按照主要变量进行排序,否则合并无法进行,还会得到错误的提示,纵向数据合并无需对哪个变量进行排序•横向数据合并需要关键变量,纵向数据合并无需关键变量•.append将两个变量类似、但观察个案不同的数据整合在一起;.merge将具有不同变量的两个数据整合在一起横向合并的第一步先看使用数据:.use[文件路径名称]–打开使用数据库.sort[关键变量]–将关键变量进行排序,该变量是两个数据库共有的标识符.save[文件路径名称],replace–保存并关闭已经按关键变量排序的使用数据库横向合并的第二步再看主要数据:.use[文件路径名称]–打开主要数据库.sort[关键变量]–对关键变量进行排序.merge[关键变量]using[文件路径名称],keep[变量]–关键变量即为sort后面的变量;利用该变量匹配两个数据–文件名是盘符数据库的名字–keep选项横向合并的基本选项.merge[关键变量A关键变量B]using[文件路径和名称].merge[关键变量]using[文件路径和名称],update.merge[关键变量]using[文件路径和名称],updatereplace.merge[关键变量]using[文件路径和名称],nokeepunique,uniqmaster,uniqusing系统变量_merge•当Stata合并文件时,软件自动生成系统变量_merge•该变量有3-5取值,因是否使用update或replace选项而异•根据取值,可以了解合并的结果:–1=观察值仅来自于主要数据,使用数据没有匹配的数据–2=观察值仅来自于使用数据,主要数据没有匹配的数据–3=观察值来自主要数据和使用数据,且数值匹配–4=观察值来自主要数据和使用数据,且主要数据的缺失值得到更新–5=观察值来自于主要数据和使用数据,但两个数据的数值不匹配one.dtaidaB11011212133141551617masterdata_merge==1+two.dtaidd118319420usingdata_merge==2=合并结果idaBd_merge1101118321213.1314151934..20251617.1_merge==3(合并了)_merge==1(主要数据)_merge==2(使用数据)一对一合并(one-to-oneonkeyvariables).mergehusbidusingI:\stata\hhwk_husb00.dta,unique一对多合并(One-to-manyonkeyvariables)(1)使用数据分布情况+-------------------------------------------------------------+|kididmothidagesexheightweighturbanedu||-------------------------------------------------------------|1.|10010310010250120200.|2.|100104100102317090.|3.|100203100202101130350.|4.|100303100302207090.|5.|100403100402151160500.||-------------------------------------------------------------|6.|100404100402131161450.|7.|100405100402100140370.|8.|300103.181158450.|9.|300104.160