stata基础命令 联系客服

发布时间 : 星期六 文章stata基础命令更新完毕开始阅读531576173b3567ec102d8aae

display 命令

display “1+1” 输出为1+1 display 1+1 输出为2

set mem设置内存

set mem 500m,perm 设置内存为500m set matsize 500 设置matsize为500 query memory 查看内存设置

保留和删除变量 keep & drop

drop crcd repttype 删除crcd repttype

keep stkcd stknme nindcd nnindcd 保留stkcd stknme nindcd nindcd (注意命令的大小写)

save保存stata格式的数据

save “D:\\Teach课件\\STATA\\data\\CG_Co.dta “ 新建文件名 save “D:\\Teach课件\\STATA\\data\\CG_Co.dta ”,replace 重置已有文件

use&insheet using

use 打开dta文件,insheet using打开csv文件

gen生成的新的变量 日

gen tdate=date(accper,\ 产生一个tdate变量用来存放从accper变量中提取的年月format tdate %d 设置tdate为整数型变量

gen year=year(tdate) 提取tdate里面的年份存为year变量 gen month=month(tdate) 提取tdate里面的月份存为month变量

if条件句&tab离散变量的频率

keep if month==12 如保留变量month等于12的数据(注意双等号) tab year 画出变量year的离散频率

纵向添加数据 append

use TRD_Year2011.dta,clear 打开2011的数据文件

append using TRD_Year2012.dta 向2011的数据文件中纵向加入2012的数据文件 *注意2012内的文件变数量与变数名必须相同,若不同,用keep或drop 保留或删除

merge文件合并

use TRD_Year2011_2012.dta,clear 打开该数据文件 sort stkcd year

save TRD_Year2011_2012.dta,replace

排列一下要合并文件内的数据顺序stkcd和year均为变量名

排列后重新储存该数据文件

use FS_Combas.dta,clear sort stkcd year

打开要合并的数据文件

同样排列一下要合并的数据顺序

合并该文件(FS_Combas)和上一文件(TRD_Year2011_2012)内的stkcd和year两个变量

merge 1:1 stkcd year using TRD_Year2011_2012.dta

save bas_TRD,replace 排列后要记得储存

do文件用法(这个练习一下,别考试的时候慌了,没保存考试成绩就没了哦) 将字符型转换成数字型或相反 destring & tostring

tostring year, gen(yearstr) 新建一个变量yearstr用来储存转换为字符形的

year destring yearstr, gen(yearnum) 新建一个变量yearnum用来储存转换为字符形

的 year br yearstr yearnum 用列表形式查看变量yearstr和yearnum

压缩数据空间 compress

gen new=1

新建一个等于1的变量new

查看变量new的数据类型(为double双精度型长度为8bytes)

压缩变量new

des new compress new

des new

1bytes) 存储类型

?

再次查看new的数据类型(为byte字符型长度为

%9.0g:一般格式

– 共占九位(右起),不指定小数点位。

? %-9.0g:一般格式

– 共占九位(左起),,不指定小数点位。

? %9.2f:固定格式

– 共占九位,指定小数点后面保留两位。

? .7e

– 科学计数法,共10位,E后面占7位。

list a001000000 in 1/8 列出 a001000000里的个数据 format a001000000 .0g format a001000000 %-20.2f

取a001000000中所有数据的后20位数

取a001000000中所有数据的20位数其中小数点要取后两位

确定样本期间

keep if year>=2006

生成哑变量

gen duality=0

建立变量duality并且等于0

取已打开文件内的的所有变量year大于等于2006的样本

replace duality=1 if y1001b==1 若变量y1001b等于1则duality等于1(这样变量duality

不等于1 便等于0,因此它是哑变量)

保存命令的结果 return

sum top1,d 建立top1的概括统计量(d的意思是详细的显示出来) return list gen top1_d2=0

建立的统计量会保存在r()里,这个语句可查看所有的统计量

建立哑变量top1_d2并设为0

如果top1大于s统计量的50百分位并且top1不为空的话,将top1_d2置1

replace top1_d2=1 if top1>r(p50) & top1!=.

tab top1_d2 显示top1_d2的离散频率

从字符变量里提取信息 substr:

ex)生成行业变量:

capture drop indu 删除变量indu(capture是为了让dofil

e继续执行,没有特殊含义) gen indu=substr(nindcd,2,4) 从nindcd字符串的第二位开始提取4

位字符,将提取的字符存在名为indu的变量内 replace indu=substr(nindcd,1,2) if indu==\ 如果indu等于大

写的C那么indu的值为nindcd里面的第1位到第2位

tab nindcd 查看nindcd tab indu

egen为gen的拓展

by year,sort: egen topmedian=median(top1) 建立一个变量名为topmedian的变

量用来存放top1的中值并按year排序

生成分类变量 autocode & xtile:

gen topone_categ1=autocode(top1,10,0,1) 从top1里面取大于0小于1的10个数据,

存在topone_categ1里面 xtile topone_categ2=top1, nquantiles(10)

排序变量 sort & gsort:

sort yclsprc sort year yclsprc gsort +yclsprc

从小到大排序yclsprc 从小到大排序year和yclsprc 从小到大排序 yclsprc

从小到大排序 year 从大到小排序 yclsprc 排序

建立变量indu_num1来存放每组indu的序号(这里year和indu的顺序换一下的话,indu_num1就变成了每组year的序号)

将top1里面的数据按个数分为10组,并存在 topone_categ2里

查看indu

gsort +year –yclsprc gsort year indu –ROA

by year indu ,sort:gen indu_num1=_n

by year indu ,sort:gen indu_num2=_N br year indu ROA indu_num1 indu_num2

删除重复值:

sort stkcd year

排序

建立变量indu_num2来存放每组indu的总个数

用列表显示 year indu ROA indu_num1 indu_num2

drop if stkcd==stkcd[_n-1] & year==year[_n-1]

计算业绩波动

sort stkcd year

排序

如果stkcd并且year有重复的话删除

gen roa_l1=ROA[_n-1] if stkcd==stkcd[_n-1]

如果stkcd的值与上一个栏相同,那么将该上一栏重复值对应的ROA值存入新建变量roa_|1

如果stkcd的值与上两栏相同,那么将该上两栏重复值对应的ROA值存入新建变量roa_|1

gen roa_l2=ROA[_n-2] if stkcd==stkcd[_n-2]

egen roasd=rowsd(roa_l1 roa_l2 ROA

检查数据是否有异常 sum

sum ROA ROE EPS TOPINQ MB top1 sep inddir lev duality size state sum ROA ROE EPS TOPINQ MB top1 sep inddir lev duality size state,d

处理异常值

winsor ROA, gen(ROA1) h(10) winsor ROA, gen(ROA2) p(0.01)

winsor ROA, gen(ROA3) p(0.01) highonly sum ROA1 ROA2 ROA3,d

新建一个ROA1来储存处理后的ROA

将 (roa_l1)( roa_l2)(

ROA)的方差存在roasd里面

这是help对p(),h()一类的描述,注意gen()是必须的,并且p()内的值必须在0到0.5之间,h()内的值必须大于1但要小于检测到错误值数量的一半,也就是之前sum检测到的错误值数量。