您好,欢迎访问三七文档
Stata命令语句格式:[byvarlist:]command[varlist][=exp][ifexp][inrange][weight][,options]1、[byvarlist:]*如果需要分别知道国产车和进口车的价格和重量,可以采用分类操作来求得,sortforeign//按国产车和进口车排序.byforeign:sumpriceweight*更简略的方式是把两个命令用一个组合命令来写。.byforeign,sort:sumpriceweight如果不想从小到大排序,而是从大到小排序,其命令为gsort。.sort-price//按价格从高到低排序.sortforeign-price/*先把国产车都排在前,进口车排在后面,然后在国产车内再按价格从大小到排序,在进口车内部,也按从大到小排序*/2、[=exp]赋值运算.gennprice=price+10//生成新变量nprice,其值为price+10/*上面的命令generate(略写为gen)生成一个新的变量,新变量的变量名为nprice,新的价格在原价格的基础上均增加了10元。.replacenprice=nprice-10/*命令replace则直接改变原变量的赋值,nprice调减后与price变量取值相等*/3、[ifexp]条件表达式.listmakepriceifforeign==0*只查看价格超过1万元的进口车(同时满足两个条件),则.listmakepriceifforeign==1&price10000*查看价格超过1万元或者进口车(两个条件任满足一个).listmakepriceifforeign==1|price100004、[inrange]范围筛选sumpricein1/5注意“1/5”中,斜杠不是除号,而是从1到5的意思,即1,2,3,4,5。如果要计算前10台车中的国产车的平均价格,则可将范围和条件筛选联合使用。.sumpricein1/10ifforeign==05、[weight]加权sumscore[weight=num]其中,num为每个成绩所对应的人数6、[,options]其他可选项例如,我们不仅要计算平均成绩,还想知道成绩的中值,方差,偏度和峰度等*/.sumscore,detail.sumscore,d//d为detail的略写,两个命令完全等价.listprice,nohead//不要表头Stata数据类型转换1、字符型转化成数值型destring,replace//全部转换为数值型,replace表示将原来的变量(值)更新destringdate,replaceignore(“”)将字符型数据转换为数值型数据:去掉字符间的空格destringpricepercent,gen(price2percent2)ignore(“$,%”)与date变量类似,变量price前面有美元符号,变量percent后有百分号,换为数值型时需要忽略这些非数值型字符2、数值型转化为字符型tostringyearday,replace//将年和日转化为字符型gendate1=month+”/”+day+”/”+year//monthday变为字符型后可以运算,将年月日构成一个新的日期变量gendate2=date(date1,”mdy”)/*date()为日期函数,它以1960年1月1日为第0天,计算从那天起直到括号中指定的某天date1一共过了多少天。”mdy”指定date1的排列顺序,这里是按照月日年的顺序来表示日期。*/数据显示格式/*format只控制数据的显示格式,并不改变内存中数据的大小。*/变量的格式为%14s,表示右对齐,共14个字符,%为固定用法(字符变量跟s,数值变量跟g)ormatstate%-14s//该命令使stata的显示格式左对齐,14前面多了个负号formatpop%11.0gc/*pop的显示格式为%11.0g,后面加上c,则每三位数间用逗号分开,c为comma的意思.*/formatmedage%8.1f//要求所有的medage都显示一位小数formatid%05.0f//对于编号,我们希望前面用零使得位数对齐,通过在前面补零,所有的id都成了5位数。导入/导出其他格式数据1、数据导入insheetusing3origin.csv/txt,clearinsheetusing3origin.txt,doubleclear当数据中某个变量的位数特别长或者对导入数据的精度要求很高的时候,需要在该命令后面加double选项。2、数据导出outsheetusingmyresult.asc,nonames如果不希望在第一行存储变量名,则可以使用nonames选项outsheetusingmyresult.asc,nonamesreplace如果文件已经存在,则需要使用replace选项数据合并1、纵向合并usemale,clear//打开记录男生信息的数据文件maleappendusingfemale//将记录女生信息的female文件追加到当前数据集中savemydata1,replace2、横向合并useeconomy,clear//打开经济学成绩数据文件sortid//按学号排序saveeconomy,replace//重新保存一下usestudent,cclear//打开学生基本信息数据文件sortid//按学号排序mergeidusingeconomy//以学号为关联,将学生的信息和成绩一一对应对接tab_merge//显示对接情况,3表示成功对接,1和2表示未成功对接drop_merge//去掉标识对接是否成功变量_mergeStata很多命令可单独使用,单独使用时,一般是对所有变量进行操作,等价于后面加上代表所有变量的_all数据重整1、长宽转换宽:长:1)宽变长usemywide,clearreshapelongmatheconomy,i(idname)j(year)//数据重整,宽变长savemylong,replace2)长变宽reshapewide*或者usemylong,clearreshapewidematheconomy,i(idname)j(yearr)//数据重整,长变宽savemywide2,replace2、多列数据转为少数几列有些数据集虽然有很多列,但实际上只有一个变量,利用stata转化成一项数据。stackvar1-var6,into(x)clearx是新生成变量的名称drop_stack变量stack记录观测值原来所在行数3、数据转置usemath,clearxpose,clear变量运算:Stata中,加(+)号同样可用于字符运算,当加号出现在两个字符之间时,两个字符将被连成一个字符。比如把”我爱”“STATA”合并在一起,命令为:.scalara=”我爱”+“STATA”一些运算函数:comb(n,k)从n中取k个的组合fill()自动填充数据int(x)取整log10(x)以10为底的对数mod(x,y)求余数round(x)四舍五入diround(3.345,.1)//四舍五入到十分位,结果为3.3diround(3.345,.01)//四舍五入到百分位,结果为3.35diround(335.1,10)//四舍五入到十位,结果为340sqrt(x)开更号substr(s,n1,n2)从S的第n1个字符开始,截取n2个字符word(s,n)返回s的第n个字符_n当前观察值的序号_N共有多少观察值geny=sum(x)//求列累积和egenz=sum(x)//求列总和egenavgx=mean(x)//求列均值egenbytedxy=diff(xy)//当x与y相等时,differ取0,若不相等为1分离变量值clearinputstr15x10*123543*2112*42243532*321344349*1endgena=strpos(x,*)//计算出*所在的位数genb=substr(x,1,a-1)//取*前面的字符genc=substr(x,a+1,.)//取*后面的字符stata中,系统缺失值大于任何一个数据,因此在生成分类哑变量时:genagegrp2=(age=65)ifage.生成的数据中,将缺失值排除在外生成分组变量:clearsetobs100//设定100个观察值genage=_n//生成一个假设的年龄变量age,依次取1,2,…,100recodeage(min/30=1)(30/60=2)(60/max=3),gen(agegrp)/*生成新的分组变量agegrp,当年龄age在30及以下时取值为1,30到60为2,60以上为3*/分组运算:byx,sort:genn1=_n根据x的不同,生成n1变量对不同类的x计数byhhid,sort:egenmage=mean(age)//根据不同类别求平均年龄bysorthhid(age):gennid1=_n//括号中的变量age只排序,不参于分组。bysorthhidage:gennid2=_n//hhid和age都既用来参与排序也分组encodecountry,gen(country1)将文本变量转化为数值变量display5+9显示计算结果sumpriceweight描述统计:求价格和重量的观察值个数、平均值、标准差、最小值和最大值scatterpriceweight绘出价格和重量的散点图linepriceweight,sort绘出价格和重量的折线图clear清除内存中原有内容cdd:/stata9在打开数据之前,先定位数据的位置use打开STATA格式的数据文件setobs5//设定5个观察值dir查看当前路径下有哪些文件savemydata//保存数据,数据文件名为mydatasavemydata,replace如果同一文件夹下已经存有mydata.dta,而你又要再次执行savemydata时edit编辑数据log将输出结果存放入结果文件genid=_n//生成一个新变量id,根据观测值排列顺序从上到下取值依次为123……replaceid=9842in3第三个观测的id值改变compress//压缩数据,使之在不损失任何信息的前提下占用空间最小erasemydata1.dta删除文件,一定要带上后缀名。报告数据describe总体展示变量信息codebook展示数据库中的每个变量情况(有多少缺失值,主要分位数,区间)list列示内存中的数据count报告共有多少观察值inspect报告变量的分布table数据列表tabulate联列表append将有相同结果的数据纵向拼接(观察值拼接)merge将两个数据文件横向拼接xpose数据转置reshapegenerate生成新的数据egen生成新的数据rename变量重命令drop删除变量或观察值keep保留变量或观察值sort对观察值按从小到大顺序重新排列encode数值型数据转换为字符型数据decode字符型数据转换为数值型数据order变量顺序的重新排列by分类操作
本文标题:Stata命令整理
链接地址:https://www.777doc.com/doc-4044173 .html