1第四讲数据操作和数据管理(一)参考书目:(Alsosee)①Mitchell,M.N.2010.DataManagementUsingStata:APracticalHandbook.CollegeStation,TX:StataPress.②Long,J.S.2009.TheWorkflowofDataAnalysisUsingStata.CollegeStation,TX:StataPress.③Hamilton,L.C.2013.StatisticswithStata:UpdatedforVersion12.8thed.Boston:Brooks/Cole.(中文版见⑤)④Baum,C.F.2009.AnIntroductiontoStataProgramming.CollegeStation,TX:StataPress⑤《应用STATA做统计分析》(劳伦斯·汉密尔顿著,郭志刚等译,重庆大学出版社,2011)。⑥《社会统计分析与数据处理技术:STATA软件的应用》(杨菊华,中国人民大学出版社,2008)数据分析的第一步首先要求将原始数据改造为Stata可用的格式。我们可以将一个新数据通过以下几种方式载入Stata:①键盘输入;②读取原始数据的ASCII格式文件;③将电子表格数据粘贴到数据编辑窗口(Editor)中;④应用第三方数据转换程序将其他电子表格、数据库或统计程序创建的系统数据集直接转换过来。一旦Stata有了内存数据,我们就可以在Stata中将其存为Stata格式,以利将来方便地取用和更新。数据操作和管理包括如下功能:⑴基本数据命令⑵创建和删除变量⑶函数和表达式⑷日期和时间⑸加载,保存,导入和导出数据2⑹合并数据⑺重塑数据集⑻标签,显示格式和注释⑼变量的更改和重命名⑽检查数据⑾文件操作⑿混合数据命令当数据管理任务很复杂或需要重复进行时,Stata用户可以编写自己的程序来自动完成这些工作。尽管Stata是因其分析功能而著名,其实它同时也具有广泛的数据管理功能。本讲将介绍其中一些基本功能。一、基本数据命令1.[D]use....................................................LoadStatadatasetuseLoadStatadataset(打开Stata数据集)例1:(打开指定变量,可应用条件语句:if/in)useln_wagegradeagetenureraceusingnlsworkdescribe2.[D]save....................................................SaveStatadatasetsaveSaveStatadataset(保存Stata数据集)savefilename(首次保存文件)save,replace(保存且替换已有文件)3.[D]describe...................................DescribedatainmemoryorinfiledescribeDescribedatainmemoryorinfile(描述内存或文件中的数据,生成内存数据或文件数据的概要)注意:第一,变量名保证没有歧义的情况下可以使用缩写,或使用缩写通配符(~)代替省略部分,例如displ~;第二,可以指定一系列的变量,如变量1-变量n3例1:usestates,cleardescribe,numbers(变量按顺序编号,变量名前面加上数字序号)describe,fullnames(完整变量名)describestateregionmedianmarriagedivorce(变量列表,注意此处用到了缩写)例2:usecensus,cleardescribepop*(通配符*)describestateregionpop18p(stat或po都是错误的)例3:describeusingstates例4:useauto,cleardescribe(显示报告,内存数据未改变)describe,replace(没有报告显示,内存数据已改变,生成包含报告显示信息的新数据集)dlist4.[D]edit....................................BrowseoreditdatawithDataEditoreditBrowseoreditdatawithDataEditor(利用数据编辑器浏览或修改数据)(可应用条件语句:if和in)edit操作汇总:Modes三种模式:1.编辑模式;2.浏览模式;3.过滤模4式(包含条件语句:inrange;ifexp)Thecurrentobservationandcurrentvariable了解当前的观测值和当前变量Assigningvaluelabelstovariables为变量指定值标签Changingvaluesofexistingcells修改已有值Addingnewvariables增加新变量Addingnewobservations增加新观测值Copyingandpasting复制和粘贴Loggingchanges工作日志的改变5.[D]list................................................ListvaluesofvariableslistListvaluesofvariables(列表显示变量值。可应用条件语句:if/in;by前缀语句)例:useauto,clearlistin1/2listmakempgweightdisplforeignin46/55,sepby(foreign)(分类显示)listmakempgweightdisplforeignin46/55,dividersep(2)abbreviate(12)(指定垂直线、水平线和变量名称缩写方式)listforeignin51/55,nolabel(显示数字代码而不是标签值)6.[D]label...................................................ManipulatelabelslabelManipulatelabels(标签操作)例1:useauto,clear5labeldata1978AutomobileDatalabelvariableforeignCartypelabeldefinerepair1verypoor2poor3medium4good5verygoodlabelvaluesrep78repairtabulaterep78tabulaterep78,nolabelnumlabel,add(添加前缀数码)tabulaterep78numlabelrepair,remove(删除前缀数码)numlabel,addmask([#])(修改前缀数码)tabulaterep78例2:usehbp4,cleardescribelabeldefineyesno0no1yes(定义值标签yesno)labeldir(列出全部已定义的值标签的名称)labellist(列出全部已定义的值标签的名称和内容)labeldefineyesno2maybe(错误提示)labeldefineyesno2maybe,add(正确,增加标签)labeldefineyesno2maybe,modify(正确,modify可以替代add)labellistyesnolabeldefineyesno2don'tknow,add(错误提示)labeldefineyesno2don'tknow,modify(正确,modify除了增加还有修改值标6签功能)labellistyesnolabeldefineyesno2,modify(删除指定标签的内容)labellistyesnolabeldropyesno(删除单个标签)labellistlabeldrop_all(删除全部标签)labellist例3:usehbp4,cleardescribelabeldefineyesno1yes2nolabellistyesnolabelcopyyesnoyesnomaybe(复制值标签)labeldefineyesnomaybe3maybe,addlabellistlabelsaveyesnomaybeusingynfile(保存值标签)typeynfile.do(显示程序文件)usesurvey,clearlabellistrunynfile(运行程序文件:自动给新文件添加值标签)labellist77.[D]rename..................................................RenamevariablerenameRenamevariable(变量重命名)例1:useauto,clearrenamerep78repair8.[D]renamegroup....................................RenamegroupsofvariablesrenamegroupRenamegroupsofvariables(变量组重命名)例:renameoldnewrename(old1old2...)(new1new2...)renameold1old2...,upper¦lower¦proper(全部大写¦全部小写¦首字母大写)rename*,lower(所有变量小写)9.[D]varmanage..................Managevariablelabels,formats,andotherpropertiesvarmanageManagevariablelabels,formats,andotherproperties(管理变量标签,格式和其他属性)10.[D]sort...........................................................SortdatasortSortdata(数据升序排序)例:useauto,clearsortmpgweightlistmakempgweightin1/811.[D]gsort........................................AscendinganddescendingsortgsortAscendinganddescendingsort(升序和降序)(与sort的区别:sort只能升序)例1:useauto,clear8gsortpricelistmakepricein1/10(10个最低价)gsort-pricelistmakepricein1/10(10个最高价)gsort-makelistmakein1/10(字符变量排序)例2:(注意gsort和sort的区别)usebp3,cleardescribegsortidtimelistidtimebpgsortid-timelistidtimebpsortid-timelistidtimebp例3:(每个病人的最低血压和最高血压)usebp3,clearegenlo_bp=min(bp),by(id)(方法1)egenhi_bp=max(bp),by(id)browsegsortidbp(方法2)byid:genlo_bp1=bp[1]gsortid-bp9byid:genhi_bp1=bp[1]list,sepby(id)例4:(略:正向和反向累积分布)setobs100(方法1)generatex=rnormal()cumulx,gen(cum)setobs100(方法2:正向累积)generatex=rnormal()sortxbyx:gencum=_Nif_n==1replacecum=sum(cum)replacecum=cum/cum[_N]gsort-x(错误提示)byx:genrcum=_Nif