资源描述
*,第三讲,Stata,数据管理,变量名称,基本规则,由英文字母、数字或,_,组成,不超过,32,个字,首字母必须为字母或,_,英文字母大写和小写具有不同的含义,示例,abc a1 a2 Gdp,都是合理的变量名,5gdp 2invest,则不是,注意:,建议不要使用“,_,”作为 变量的首字母,Stata,的内部变量许多是以,_,开头的,如,_n,_N,_b,等。,变量的取值类型,字符型变量,存储格式,str#,,,#,表示该变量存储最多可容纳的字符数,如,str7,数值型变量,整数(,int,),浮点(,float,),长整数(,long,),双浮点(,float,),日期型变量,变量的显示格式,数值型变量的显示格式,e,格式(科学计数法),f,格式(固定格式),g,格式(一般格式),c,格式(带千分符),如,%9.0g,,,%9.0f,,,%9.0fc,字符变量的显示格式,%#s,如,%22s,%-14s,,其中“,-,”表示左对齐,变量的显示格式,日期型变量,+-+,-Numerical value&interpretation-,Format Meaning Value=-1 Value=0 Value=1,-+-+-+-+-,%tc clock 31dec1959 01jan1960 01jan1960,23:59:59.999 00:00:00.000 00:00:00.001,%td days 31dec1959 01jan1960 02jan1960,%tw weeks 1959w52 1960w1 1960w2,%tm months 1959m12 1960m1 1960m2,%tq quarters 1959q4 1960q1 1960q2,%th half years 1959h2 1960h1 1960h2,%tg generic -1 0 1,+-+,字符型转为数值型,destring,:字符中还有特殊符号,如“,-,,,%,”等,destring x,replace ignore(“-”),real():,字符中没有特殊符号,real,(,string,),数值型转为字符型,tostring,:,tostring x,replace,tostring x,gen(x1),string:,gen x=string(y),字符变量的操作,字符变量的分解:,split var,,,parse,(,x,),split date,parse(-),字符变量的合成:,+,gen a=b+c,dis“I am”+”a teacher”,获取部分字符串:,substr(x,t1,t2),“2004-01-03”substr(x,1,4)=,“,2004,”,变量的显示格式,日期型变量,如何将字符串变为数值,以日期为例,命令,date,(,string,mask,),如,gen x=date,(,date,,“,MDY,”),修改变量的格式,format,命令,format varlist%fmt,sysuse auto,练习,变量的标签,标签是为变量、数据等提供说明,便于使用者更清晰的了解数据的结构和变量。,label,命令,Label varname “label”,Sysuse auto,clear,Label var make“make”,基本数据操作命令,browse,edit,rename,save,describe,list,codebook,display,sort,Stata,中的表达式:算术表达式,+,(减号或负号),*,/,(,乘方,),dis,(,2+3*93,),0.5/63,Stata,中的表达式:关系和逻辑表达式,=,(等于),!,=,(不等于),=,=,|,(或),&,(且),list if age20&age50,list if age50,数据子集的定义,in,命令:用于指定观测值,可以是某一个观测值,也可以是某个区间,List in 20/30,List in 1/10,List in-10/-1,if,命令:如果,List if age=20,by,命令:,非常重要,用来对某些具有相同复制的样本子集重复执行命令,by varlist:stata_cmd,Bysort varlist:stata_cmd,如,bysort sex:keep if age=20,变量的相关操作,产生新变量:,generate,命令,gen x y,;,gen x=1,;,gen x=x2,替换已有变量:,replace,命令(该命令不能缩写),replace x=2 if x=1,产生特殊函数值的命令:,egen,egen x=mean(y),gen dy=y-x,gen x1=median(y),变量的相关操作,产生新变量:,generate,命令,gen x y,;,gen x=1,;,gen x=x2,替换已有变量:,replace,命令(该命令不能缩写),replace x=2 if x=1,产生特殊函数值的命令:,egen,egen x=mean(y),gen dy=y-x,gen x1=median(y),删除变量和记录的命令:,drop,drop x,drop if x=2,保留记录的命令:,keep,keep if x=2,_n,和,_N,_n,:样本序号变量,是一个变量,内容为,1,2,3,.,n,_N,:样本数指标,是一个单值,内容为样本数,_n,是一个永远存在,但却不能,list,出来的特殊变量,_n,的取值会随样本排序的变化而变化,_n,和,_N,的应用,产生滞后项:,gen lagsales=sales _n-1,产生前导项:,gen lagsales=sales _n+1,产生最后一项:,gen msales=sales _N,差分:,gen dsales=sales-sales _n-1,增长率:,gen gsales=(sales-sales _n-1)/sales _n-1,表示是否为第一,/,最后一项:,if _n=1 /if _N=1,数据的纵向合并,纵向合并是指把两个数据的样本加总在一起,合并后的数据变量数不变,但样本量增加,纵向合并两个数据之前,需要以下几个步骤:,两个数据文件里的变量的变量名要一致,两个数据文件里相同变量的变量类型要一致,合并命令:,append,use x1.dta,clear,append using x2.dta,save x1.dta,replace,练习:,调用,auto.dta,数据表单,将数据表单按,foreign=0,或,1,分为两个文件分别保存,然后合并,数据的横向合并:,merge,横向合并是指将两个数据文件的变量加总在一起。合并后数据的样本不变,但变量的数量增加。,合并命令:,merge,merge varlist using filename,options,在横向合并中,主数据文件和被合并文件的合并变量必须,sort,use a.dta,clear,merge x1 using sj.dta,sort,save a.dta,replace,该命令完成后会生成一个变量,_merge,_merge=1,表示该记录来自主数据文件,_merge=2,表示该记录来自被合并文件,_merge=3,表示同时来自主数据文件和被合并文件,tab _merge,数据的横向合并练习,打开,auto.dta,文件,将该数据文件拆分为两个文件,一个包含,make price mpg rep78 headroom trunk,变量,存为,auto1.dta,;另一个包含,make weight length turn displacement gear_ratio,,存为,auto2.dta,。,以,auto1.dta,为主数据文件,以,make,为合并变量,合并,auto2.dta,文件。,请大家写,do,文件完成,数据的横向合并练习,打开,auto.dta,文件,将该数据文件拆分为两个文件,一个包含,make price mpg rep78 headroom trunk,变量,存为,auto1.dta,;另一个包含,make weight length turn displacement gear_ratio,,存为,auto2.dta,。,以,auto1.dta,为主数据文件,以,make,为合并变量,合并,auto2.dta,文件。,请大家写,do,文件完成,分位数,命令,pctile,:产生分位数,不能与,by,连用,例:,pctile x=size,nq(10),例:,pctile x=size,nq(10)gen(y),命令,xtile,:产生所属组别,不能与,by,连用,例:,xtile x=size,nq(10),命令,_pctile,:产生分位数,并将各分位数存在,r,(,r#,)中,例:,_pctile price,,,p,(,1 99,),dis r,(,r1,),r(r2),函数,pctile(),与,xtile(),,可以与,by,或,bysort,连用,例:,bysort year:egen x=pctile(size),nq(10),例:,bysort year:egen x=xtile(size),nq(10),分位数,缩尾处理(,winsor,),截尾处理(,truncating,),虚拟变量的产生,基本方式:使用,generate,和,replace,命令,sysuse nlsw88.dta,clear,gen dum race2=0,replace dum race2=1 if race=2,gen dum_race3=0,replace dum_race3=1 if race=3,基于类别变量:,tab,命令,sysuse nlsw88.dta,clear,tab race,gen(dum_r),基于类别变量生成虚拟变量:,xi,命令,xi i.race,将连续变量变为类别变量,等分样本:,group,(),sysuse nlsw88.dta,clear,sort wage,gen g_wage=group(5),tab g_wage,指定分界点的转换方式:,recode,sum age,recode age(min/39=1)(39/42=2)(42/max=3),gen(g_age),*1 if age=39,*2 if 39age=42,右闭区间,do,文档简介,do,文档是,stata,命令的集合,方便我们一次性执行多条,stata,命令,如何打开,do,文档:,doedit,doedit mylog.do,do,文档的执行,执行一部分命令,整体执行,do mylog.do,注释方式,*第一种注释方式,sum price weight/*,第二种注释方式*,/,dis x /,第三种注释方式,练习,从,CSMAR,中下载,2005-2010,年沪深主板公司财务数据(,ROA,、总资产、销售收入)、公司治理数据(第一大股东持股比例、最终控制人性质)与基本信息数据(行业、注册地等),并合并这些数据,把字符变量(日期,date,)分解为数值变量:年,year,、月,month,、日,day,根据年,/,月,/,日(年,/,月或年,/,季)生成日期变量,生成新的证监会行业分类变量:制造业以前,2,个代码标识,其他行业以第,1,个代码标识,练习,计算样本中的公司家数,留下每一年中每一行业的最大的一家公司,生成行业中位数调整的,ROA,生成以,3,年,ROA,标准差度量的经营风险变量,根据最终控制人性质生产国有产权虚拟变量,state,学习在回归中使用交互项,将样本按规模大小分为,5,组并生成分组变量,按,ROA,的,1%,与,99%,分位数进行,winsorizing,和,truncating,
展开阅读全文