• / 29
  • 下载费用:12 金币  

Stata学习进步文本笔记.doc

关 键 词:
Stata 学习 进步 文本 笔记
资源描述:
\\以下命令均采用小写字母Chapter 1 stata入门1.1打开数据use "D:\Stata9\auto.dta", clear 用use命令打开数据sysuse auto,clear auto 为系统数据 sysuse为打开系统数据的命令1.2获取帮助Help summarize summarize为需要获取帮助对象 可以改为其他的需要帮助的对象Findit summarize,net 寻找网络帮助 summarize为需要获取帮助对象Search summarize ,net 寻找网络帮助 summarize为需要获取帮助对象显示结果Display 5+9 1.3描述统计(summarize 可简写成sum)Use atuo,clearSummarize price 描述price的观察值个数、平均值、标准差、最小值、最大值Sum weight summarize可简写成sumSum weight price 同时完成上面两步1.4绘图Scatter price weight scatter 为绘制散点图命令Line price weight ,sort line 为绘制折线图命令,sort为排序,绘制折线图前需要先排序1.5生成新的数据(generate 可简写成gen)ClearSet obs 1000 设置观测值的组数Gen x=_n _n 为观察值得序号Gen y=x+1001.6控制结果输出显示List n 1.7设置屏幕滚动Set more off 先设置此项 则显示时,屏幕不停止Set more on 先设置此项 则显示时,会使显示停止1.8清除内存中原有内容clear1.9设置文件存取路径(cd)Cd d:\stata d:\stata为路径1.10如果想知道当前路径下有哪些文件,可以用dir 命令来列示.dir1.11假设你想在D 盘的根目录下创建一个新的文件夹mydata 来存放数据文件,命令为mkdir。mkdir d:\mydata1.12错误提示List myvar上述命令试图显示变量myvar,但是结果窗口仅出现如下的显示variable myvar not foundr(111);红色信息表明,没有找到一个叫myvar 的变量,的确,我们的数据中并没有这个变量。List 巧妇难为无米之炊。红色信息下面还有一个天兰色的 r(111),用鼠标点击,即可弹进一个帮助信息框,给出错误的更详尽解释。再比如,我们在求五数概略时,误把 sum 写成了sun. sununrecognized command: sunr(199);显示说不认识sun 这个命令。附录:常见命令Chapter2命令语句2.1 掌握命令语句的格式[by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [, options]注:[ ]表示可有可无的项,显然只有command 是必不可少的,下面结合例子分项来讲解命令的各个组成部分。2.2 命令command[by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [, options]. cd d:/stata9. use auto, clear //打开美国汽车数据文件auto.dta,后面的clear 表示先清除内存中可能存在的数据集. summarize /*很多命令可单独使用,单独使用时,一般是对所有变量进行操作,等价于后面加上代表所有变量的_all。 */. summarize _all /注意到该命令输出结果与上一个命令完全一样. sum //与前一命令等价,sum 为summarize 的略写. su su 是summarize 的最简化略写,不能再简化为s. s //简写前提是不引起混淆。执行这个命令将出现错误信息unrecognized command: s2.3 变量varlist[by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [, options]varlist 表示一个变量,或者多个变量,多个变量之间用空格隔开。. cd d:/stata9. use auto, clear. sum price //求价格的观察值个数,平均值,方差,最小值和最大值. su p //变量和命令均可略写,注意到两个结果完全一样. su t //分数据中有两个变量的开首字母为t(trunk 和turn),所以STATA 认为t 为模糊的省略。m ambiguous abbreviation /红色为错误信息. sum tr tu //求trunk 和turn 变量的五数概略统计变量名称除以下字符不能用作变量名外,任何字母、字母与数字(单独的数字也不允许)组合均可用做变量名:_all _b byte _coef _cons double float if in int long _n _N _pi _pred _rc _se _skip using with基本要求如下:_ 第一个字元可以是英文字母或, 但不能是数字;_ 最多只能包括32 个英文字母、数字或下划线;_ 由于STATA 保留了很多以“_ “开头的内部变量,所以最好不要用为第一个字元来定义变量。2.4 分类操作by varlist[by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [, options]如果需要分别知道国产车和进口车的价格和重量,可以采用分类操作来求得,. cd d:/stata9. use auto, clear. by foreign: sum price weight //分别计算国产车和进口车的价格和重量但如果执行下面两个命令,将出现错误*/. sort price //按价格从低到高重新排序. by foreign: sum price weight*not sorted/* 系统提示没有排序,这是因为by varlist 在执行时要求内存中的数据是按照by 后面的变量排序的。当我们用sort price 重新排序后,就打乱了原来按照foreign 的排序,所以出现了错误提示。更正的办法是:*/. sort foreign //按国产车和进口车排序. by foreign: sum price weight*更简略的方式是把两个命令用一个组合命令来写。. by foreign, sort: sum price weight如果不想从小到大排序,而是从大到小排序,其命令为 gsort。.gsort - price /按价格从高到低排序. gsort foreign –price /*先把国产车都排在前,进口车排在后面,然后在国产车内再按价格从大小到排序,在进口车内部,也按从大到小排序*/2.5 赋值及运算=exp[by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [, options]例:生成一个新的价格变量nprice,该变量的取值为原汽车价格变量price 的基础上涨10 元. cd d:/stata9. use auto, clear. gen nprice=price+10 //生成新变量nprice,其值为price+10. list price nprice //比较一下两个变量的取值/*上面的命令generate(略写为gen) 生成一个新的变量,新变量的变量名为nprice,新的价格在原价格的基础上均增加了10 元。. replace nprice=nprice-10 /*命令replace 则直接改变原变量的赋值,nprice 调减后与price 变量取值相等*/. list price nprice //再比较一下两个变量,相等。2.6 条件表达式if exp[by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [, options]例:若只想查看国产车的品牌和价格,则加入筛选条件if foreign==0 */. cd d:/stata9. use auto, clear. list make price if foreign==0*只查看价格超过1 万元的进口车(同时满足两个条件),则. list make price if foreign==1 & price>10000*查看价格超过1 万元或者进口车(两个条件任满足一个). list make price if foreign==1 | price>10000*分类型查看价格超过1 万元的汽车的品牌和价格. by foreign, sort: list make price if price>100002.7 范围筛选in range[by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [, options]如果要计算较低的前10 台车的平均价格,则要先按价格排序,然后仅对前10个车的价格求平均值. cd d:/stata9. use auto, clear. sort price. sum price in 1/5注意“1/5”中,斜杠不是除号,而是从1 到5 的意思,即1,2,3,4,5。如果要计算前10 台车中的国产车的平均价格,则可将范围和条件筛选联合使用。. sum price in 1/10 if foreign==02.8 加权weight[by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [, options]任务:下表是2005 年湖北省高考640 分及以上成绩一分一段的人数统计,第一列score 为高考分数,第二列num 为该分数段的人数。现在我们要求640 分及以上考生的平均分数。score num650 193649 26648 23647 16646 21645 26644 32643 23642 38641 29640 38操作:先将上面的表格复制,然后进入STATA,执行如下命令. clear //清空STATA. edit然后把光标定位在表格的第一行第一列,点右键,选择粘贴(paste),上表数据便被复制到STATA 中,退出数据编辑器sum score //思考:得到的结果是640 分及以上考生的平均分吗?简单地使用sum 命令得到的平均成绩显然是不正确的,因为各个分数下的人数是不一样的,正确的计算需要加权,加权的办法是. sum score [weight=num] / *加权计算,比较该结果与sum score 的区别,实际上,不用权重选项时,相当于权重相等。*/. sum score [w=n] //w 为weight 的略写,n 为num 的简写,两命令等价2.9 其他可选项,options[by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [, options]许多命令都有一些可选项例如,我们不仅要计算平均成绩,还想知道成绩的中值,方差,偏度和峰度等*/. sum score, detail. sum score, d //d 为detail 的略写,两个命令完全等价注意,结果中显示了 1%,5%等分位数,意思是把变量从小到大排序,第1%位置处的取值是多少,第10%的位置上的取值是多少。显然,50%位置处的取值是中位数。此外,加了detail 选项后,还得到最小的前5 个数,最大的5 个数,以及峰度和偏度等。*再如,list 命令也有一些可选项. cd d:/stata9. use auto, clear. list price in 1/30, sep(10) //每10 个观察值之间加一横线. list price in 10/30, sep(2) //每2 个观察值之间加一横线. list price, nohead //不要表头Chapter3 数据3.1 打开示例数据和网络数据:use3.1.1 示例数据示例数据为STATA 帮助文件中所用的数据,其后辍名为.dta,如果在STATA软件当前路径下,直接用use 命令即可打开;如果不在当前路径下,则可以使用sysuse 命令打开。. use auto,clear //打开汽车数据auto.dta. cd d:/ //改变路径到d:/. use auto, clearfile auto.dta not found //系统提示无法找到文件,因为auto.dta 不在d:/r(601);. sysuse auto,clear //无论当前路径是什么,该命令均能打开系统自带文件3.1.2 从网络获取数据上述示例数据可能没有全部下载到你的所用的电脑中,因此简单地使用use和sysuse 命令时,可能出现错误,如. use nlswork, clearfile nlswork.dta not found此时,如果确定该数据为示例数据,可以直接通过网络获取,其命令为:. use http://www.stata-press.com/data/r9/nlswork //从网站获取数据,或者. webuse nlswork, clear //与前一命令等价,从STATA 官方数据库获取数据webuse只能从http://www.stata-press.com/data这一路径获取数据,如果不是该网站的数据,webuse失效,只能把网站地址完全写出来。使用该命令时必须确保网络连接正常.另一个网络数据较多的地方是波士登大学的数据中心,伍德里奇的《计量经济学导论》一书中所使用的全部数据都可以通过该数据中心获得。比如. use http://fmwww.bc.edu/ec-p/data/wooldridge/CEOSAL1即打开教材中例2.3 中所使用的CEO 数据。use 命令只能打开后辍名为“*.dta”格式的数据,.dta 格式以外的数据,STATA不能直接读取,需要从外部读入,最简单而直接的办法是复制和粘贴。但是有时没有其他软件,比如,我们有SAS 格式或SPSS 格式的数据,但没有SAS 软件和SPSS 软件,此时需要用STATA 提供的其他命令或者使用transfer 数据格式转化软件。在讨论其他输入或导入数据的方法之前,我们先来学习一点数据类型的知识。3.2 数据类型STATA 通常把变量划分为三类:分别是数值型,字符型和日期型3.2.1 数值变量:用0、1、2…9 及+、–(正负号)与小数点“(.)”来表示。在输入数据时,逗号不能被识别,如1,024 应该直接写成1024.5-55.25.2e+35.2e-2后面两个数据为科学计数法的数据,分别表示5200 和0.052.其中的e 相当于10,因此5.2e+3 的意思是:5.2*103=5200数值型变量按其精度区分,又有五种类型,分别是:存贮类型 最小 最大 0-领域 字节---------------------------------------------------------------------byte -127 100 +/-1 1int -32,767 32,740 +/-1 2long -2,147,483,647 2,147,483,620 +/-1 4float -1.70141173319*10^38 1.70141173319*10^36 +/-10^-36 4double -8.9884656743*10^307 8.9884656743*10^307 +/-10^-323 8当运算精度要求很高的时候,需要将变量设置成浮点型或双精度型。另注意1 和1.0000 的精度是不同的,前者在(0.5,1.5)区间内近似,而后者在(0.99995,1.00005)区间内近似。若多次运算反复取四舍五入,精度较低时将使计算误差迅速变大,然而,精度高时占用的内存资源较多。下面的命令有助于理解变量存贮类型变换。. clear. set obs 1 //将设定一个观察值obs was 0, now 1 //提示信息说,之前系统中没有观察单位,现在有了一个. gen a=1 //生成一个新变量a,令a 取值为1. d /*d 为describ 命令的略写,describ 命令显示数据集的属性信息,注意观察显示结果中,a 的storage type 为float 型,浮点型为默认类型*/Contains dataobs: 1vars: 1size: 8 (99.9% of memory free)storage display valuevariable name type format label variable labela float %9.0gSorted by:Note: dataset has changed since last saved. compress //在不损害信息的基础上压缩,使数据占用空间尽可能小a was float, now byte //a 由浮点型变为了字节型. d // 注意a 的storage type 现在为byte 型. replace a=101 /* 注意a 的storage type 现在自动升为int 型,因为byte 最大只能为100*/a was byte now int(1 real change made). replace a=100. compress. d //重新变回到byte 型. replace a=32741 //直接变到long 型,因为int 型最大只能到32740. gen double b=1 //直接生成双精度变量b. recast double a //将a 变成双精度变量b. d //注意到a 和b 均为双精度型3.2.2 字符串变量字符变量通常是一些身份信息,如姓名,地名。另外,定类变量也可以用字符变量来表示,如性别分为“男”和“女”。字符串变量由字母或一些特殊的符号组成(如地名〈籍贯〉变量,迁出地,住址,职业等等)。字符串变量也可以由数字来组成,但数字在这里仅代表一些符号而不再是数字。字符串变量通常以引号“”注标,而且引号一般不被视同为字符的一部分,注意这里的引号必须是英文输入状态下的引号。字符串最多可以达244 个字符。一般用str#来表示字符的多少,如str20表示将有20 个字符。一般三个中文字的姓名需要6 个字符。字符型示例“String”“string”” string””string ””” //特殊字符串,表示空字符,缺失值。” ” //注意与空字符串的区别,含有一个空格”125.27” //”125.27”由于有双引号,将被视同为字符而非数值。“$2,343.68”“I love you”“旺材是条狗”注意前四个字符串均不相同,大小写是不一样的,有无空格及空格的位置不同,都表示不同的字符串。对于”125.27”这样的数值型的字符串,可以用real()函数或者destring 命令转化成数值型变量。具体操作见3.3.1。3.2.3 日期型变量在STATA 中,1960 年1 月1 日被认为是第0 天,因此1959 年12 月31 日为第-1 天,2001 年1 月25 日为15000 天。对日期型变量的讨论将在后面的时间序3.2.4 缺失值没有意义的计算结果显示为”.”. display 2/0另一种情况是,数据中含有缺失值,而STATA 默认的缺失值也用“.”来表示。在有些数据文件中,缺失值不是用“.”或者空来表示的,而是用-9996 等来表示,如果要将其全部替换为“.”,或者反之,将“.”替换为-9996,命令为:. mvencode age,mv(-9996). mvdecode age,mv(-9996)3.3 数据类型转化任务:将 destring1, destring2 和tostring 中的数据类型进行相互转化*3.3.1 字符型转化成数值型:destring*destring1数据中的数据全为字符型,转换为数值型.webuse destring1, clear.des /*注意到所有的变量存贮类型(storage type)均为字符型str#,其中#号表示字符串长度*/Contains data from http://www.stata-press.com/data/r9/destring1.dtaobs: 10vars: 5 3 Mar 2005 10:15size: 240 (99.9% of memory free)storage display valuevariable name type format label variable labelid str3 %9snum str3 %9scode str4 %9stotal str5 %9sincome str5 %9s.sum //因为所有变量为字符型,所以不能进行数值计算.gen nincom=incom+10 //因字符不能进行四则运算,不能进行加法运算*type mismatch //系统提示类型不匹配,因为income 为字符型,10 为数值型.destring, replace //全部转换为数值型,replace 表示将原来的变量(值)更新.sum //注意到转换为数值型后,可以求五数概略了.gen nincom=income*1.3 //转换后,可以运算,工资终于涨了30%!.list nincom income //工资终于涨了30%!*----------------将字符型数据转换为数值型数据:去掉字符间的空格------------*destring2 数据集中的data 变量为字符型,且年月日间有空格,转移为数据型.webuse destring2, clear.des //注意到所有的变量均为字符型 str.list date //注意到date 年月日之间均有空格date------------1. 1999 12 102. 2000 07 083. 1997 03 024. 1999 09 00.destring date, replace //想把date 转换成数值型,但失败了,系统提示说*date contains non-numeric characters; no replace /*由于含有非数值型字符(即空格),因此没有更新,也即转换命令没有执行。*/.destring date, replace ignore(“ ”) /*忽略空格,然后转换,注意这里的” “中间有一个空格,不是””。*/date: characters space removed; replaced as long //成功转换为long 型.des //注意到date 的storage type 已变为long.list date //注意到空格消失了date----------1. 199912102. 200007083. 19970302/*与date 变量类似,变量price 前面有美元符号,变量percent 后有百分号,换为数值型时需要忽略这些非数值型字符。*/.destring price percent, gen(price2 percent2) ignore(“$ ,%”).list //注意到price2 前面的$号消失,percent2 后面的%号消失date price price2 percent percent2---------------------------------------------------------1. 19991210 $2,343.68 2343.68 34% 342. 20000708 $7,233.44 7233.44 86% 86.d //注意到price2 和percent2 均变为数据值型变量double 和byte*3.3.2 数值型转化为字符型:tostring.webuse tostring, clear /*该数据中年月日的数据类型不一样,不能直接相加生成一个反映日期的新变量*/.des //注意到month 为字符型,而年和日为数值型.list.gen date1=month+”/”+day+”/”+year //将年月日构成一个新的日期变量type mismatch //由于month 为字符型,年和日为数值型,不同类型不能相加r(109);.tostring year day, replace //将年和日转化为字符型.des //注意到,现在全部变为字符型.gen date1=month+”/”+day+”/”+year //将年月日构成一个新的日期变量.list //生成了一个新的变量date1,其为三个字符串和两个”/”符号连接而成.gen date2=date(date1,”mdy”) /* date()为日期函数,它以1960 年1 月1日为第0 天,计算从那天起直到括号中指定的某天date1一共过了多少天。”mdy”指定date1 的排列顺序,这里是按照月日年的顺序来表示日期。*/.list //新生成的date2 表示总天数*小游戏:请算算你活了多少天?示例:一个生于1975 年12 月27 日的家伙,他活了?.di date(“1975/12/27”,”ymd”)3.4 数据显示格式:format/*format 只控制数据的显示格式,并不改变内存中数据的大小。*/.webuse census10,clear //美国人口普查数据.des //第三列显示了数据的格式display formatstorage display valuevariable name type format label variable labelstate str14 %14s Stateregion int %8.0g cenreg Census regionpop long %11.0g Populationmedage float %9.0g Median age*注意到, stata 变量的格式为%14s,表示右对齐,共14 个字符,%为固定用法.list in 1/4 //注意不同的显示格式:均为右对齐state region pop medage------------------------------------------1. Alabama South 3893888 29.32. Alaska West 401851 26.13. Arizona West 2718215 29.24. Arkansas South 2286435 30.6.format state %-14s // 该命令使stata 的显示格式左对齐,14 前面多了个负号.list in 1/4 //注意不同的显示格式,state 现在左对齐了+------------------------------------------+state region pop medage------------------------------------------1. Alabama South 3893888 29.32. Alaska West 401851 26.13. Arizona West 2718215 29.24. Arkansas South 2286435 30.6.format region %-8.0g / *region 变量看起来是字符型变量,但实际上为数据型,它也可以左对齐,同样是加一个负号..list in 1/4 //注意region 现在左对齐了.format pop %11.0gc /*pop 的显示格式为%11.0g,后面加上c,则每三位数间用逗号分开,c 为comma 的意思.*/.list in 1/4 //结果加上了逗号,但是第五个观察值没有任何变化state region pop medage-------------------------------------------1. Alabama South 3,893,888 29.32. Alaska West 401,851 26.13. Arizona West 2,718,215 29.24. Arkansas South 2,286,435 30.65. California West 23667902 29.9*因为这个数太大,加逗号将超过11 位数,我们可以先把总的位数增加.format pop %12.0gc //把pop 显示总长度数增加到12 位.list in 5 //现在所有的pop 都按逗号分开了5. California West 23,667,902 29.9.format medage %8.1f //要求所有的medage 都显示一位小数.list in 1/4state region pop medage--------------------------------------------1. Alabama South 3,893,888 29.32. Alaska West 401,851 26.13. Arizona West 2,718,215 29.24. Arkansas South 2,286,435 30.6.gen id=_n //生成一个新变量id,取值依次为1,2,3.replace id=9842 in 3 //将id 的第三个变量替换为9842.list in 1/3state region pop medage id--------------------------------------------1. Alabama South 3893888 29.3 12. Alaska West 401851 26.1 23. Arizona West 2718215 29.2 9842.format id %05.0f //对于编号,我们希望前面用零使得位数对齐.list in 1/3 //注意到通过在前面补零,所有的id 都成了5 位数。state region pop medage id--------------------------------------------------1. Alabama South 3893888 29.3 000012. Alaska West 401851 26.1 000023. Arizona West 2718215 29.2 098423.5 在STATA 中直接录入数据:input3.5.1 菜单式操作任务:按学号录入五个学生的经济学成绩id economy1 402 803 904 705 53操作:(1)点击图标>>在打开的数据表格第一列中录入五个姓名>>在第二列中录入另五个成绩双击 var1 弹出对话框>>将变量改名为id>>在label 中写入学号>>退出弹出窗口;双击 var2 弹出对话框>>将变量改名为name>>在label 中写入姓名>>关闭数据编辑器(2)点击图标保存数据>>给数据命令为student >>退出在建立数据文件后,如果没有存盘,这个文件即是一个“临时的”数据文件,它将随着退出STATA 系统时而消失。当数据文件被存储在后,它将成为一个“永久性”的数据文件,用户可以在以后经常使用它而不必重新建立之。3.5.2 命令操作任务:按学号录入五个学生的学号和姓名id name economy1 John 402 Chris 803 Jack 904 Huang 435 Tom 70操作:在command 窗口中键入(注:前面的点号不必健入,每完成一行按回车键,黑体为命令,斜体为变量名或文件名):对于字符型变量,需要指明其为字符型并指明最大的字符长度。• clear //清空内存• input id str10 name economy //输入变量名,特别注意姓名前的str10.• 1 John 40 //录入第一个学生的学号和成绩• 2 Chris 80 //录入第二个学生的学号和成绩• 3 Jack 90• 4 Huang 70• 5 Tom 53• end //录入数据结束• save economy //保存数据到当前路径,文件名为economy3.5.3 程序操作(1)打开do file editor,键入以下内容:clear //清空内存input id str10 name economy //输入变量名,特别注意姓名前的str10.1 John 40 //录入第一个学生的学号和成绩2 Chris 803 Jack 904 Huang 705 Tom 53end //录入数据结束save economy,erplace //保存数据到当前路径,文件名为economy(2)保存程序文件为mydo(3)点击,执行后得到数学成绩3.6 导入其他格式数据:insheet经常会遇到的情形是:我们有其他格式的数据,需要导入到STATA 中进行分析,建议大家此时将其他格式数据复制到分析数据的文件目录下,然后直接用STATA 的导入数据文件命令导入原始数据,用程序模式进行处理,然后导出处理结果。这样做的最大好处是:既不会破坏最原始的数据文件,又使我们的每一步数据处理和分析过程都有迹可循。3.6.1 insheet 命令在本书所附数据文件中找到“3origin.xls”数据,将其打开并另存为“3origin.csv”,(另存时请注意要选择“保存类型”下拉单,选择CSV(逗号分隔)这一项)。然后在STATA 命令窗口中用下述命令导入. insheet using 3origin.csv, clear也可以先将“3origin.xls”数据打开并另存为“3origin.txt”,然后用下面的命令导入. insheet using 3origin.txt, clear当数据中某个变量的位数特别长或者对导入数据的精度要求很高的时候,需要在该命令后面加double 选项。. insheet using 3origin.txt, double clear3.6.2 infile 命令对于“3origin.txt”或“3origin.csv”,还可用infile 命令导入STATA,此时需要先指出变量名。尤其要注意,当变量为字符型时,要先指明。infile id str10 name gender minority economy math using origin.txt, clear或者infile id str10 name gender minority economy math using origin.csv, clear3.6.3 infix 命令还有一种标准化的数据,每个变量的位数是确定的,不足时,前面用0 补齐,以origin.数据的后面四个变量为例,其数据格式为114068128052029076024390037096115385028536129565如果遇到这种数据格式,需要对照数据说明导入数据,相应的命令为:infix gender 1 minority 2 economy 3-4 math 5-6 using origin.csv, clear其中的数字为对应的数字位数。3.6.4 outsheet 命令与前述三个命令相反,有时我们需要将STATA 数据导出为其他格式数据,比如文本格式或后缀为 acs 的格式:此时需要使用outsheet 命令实现,该命令的基本格式如下。outsheet using myresult.txtoutsheet using myresult.asc此时建立的文件myresult.txt 第一行为变量名,第2~6 行为变量值。变量列间用Tab 键分隔。如果不希望在第一行存储变量名,则可以使用nonames 选项。如果文件已经存在,则需要使用replace 选项,相应的命令分别为。outsheet using myresult.asc, nonamesoutsheet using myresult.asc, nonames replace3.6.4 使用transfer 软件Transfer 软件专用于转换不同格式的数据文件,使用起来非常方便。只需要在input File Type 栏中选择需要转化的原数据文件类型,然后定位打开需要转化的原数据文件。再选定输出文件类型,指定输出文件的存放位置和文件名。最后点击transfer 按钮。数据便被转化。该软件可在 http://www.pinggu.org/bbs上下载试用,不过做正式工作,建议采用正版软件。3.7 标签数据:label要掌握的命令:为了创建一个完整的文件,要掌握下面的命令。以上命令可以通过help command 查看到具体的命令格式。*3.7.1 变量重命令:rename/*采用直接复制粘贴法,将原始数据粘入stata。然后退出数据编辑器,先将该数据保存起来,文件名为 3origin.dta。*/save 3origin, replace/* 新粘入的变量自动命令为var1, var2,...var6,为使变量容易理解和记忆,要将变量重新命名,命令为name。在此之前,可以先用一个describ 命令看看数据情况*/use 3origin, cleardes //查看数据集的整体情况,注意变量名为var1-var6renpfix var v //将所有var 开头的变量名改为以v 开头rename v1 id //将第一个变量重新命令为idrename v2 namerename v3 genderrename v4 minorityrename v5 economyrename v6 mathdes //再次查看数据集的整体情况,注意变量名已改变*3.7.2 标签文件:label data/* 为避免时间太长,忘记变量的含义,我们可以用label 命令来标记。该命令可以用来标记数据文件,如将文件取名为“2007 年秋5632 班学习成绩单” */label data “2007 年秋5632 班学习成绩单”* 在文件处理过程中加注说明,命令为notesnote: 2007 年9 月6 日由任我行创建该数据* 下一次打开数据,要查看创建和数据处理的说明时,直接键入note*3.7.3 标签变量:label var*也可以用label 命令来标记变量,如将id 标记为“学号”label var id “学号”label var name “姓名”label var gender “性别 1=男 2=女”label var minority “民族”*3.7.4 标签变量值:label define 和label values*还可以标记变量的取值。注意要按以下两步来操作:label define genderlb 1 "男" 0 "女"list //注意此时gender 变量显示的值为0 或1label values gender genderlb //该命令仅仅是显示的变化,实质不变list //注意此时gender 变量显示的值为男或女label define minoritylb 1"汉族" 2 "少数民族"label values minority minoritylblist*3.7.5 标签增加与修改:add 和modify/* 定义完汉族和少数民族后发现还有些学生的民族是不知道的(原始值为 3),则*/label define minoritylb 3 ” 不知道”*然而结果窗口却显示出如下错误信息,label minoritylb already defined* 因为minoritylb 已经存在并被定义,我们需要加上选项,addlabel define minoritylb 3 “不知道”, addlistlabel define minoritylb 3 “don’t know”, add/*试图将“不知道”改为英文“don’t know”,再次显示错误*invalid attempt to modify label因为3 已被定义,这次不是增加而是修改,所以选项为,modify*/label define minoritylb 3 “don’t know”, modifylist*3.7.6 标签显示与删除:dir 和droplabel dir //显示标签label list //显示标签的赋值含义list //注意到minority 显示的是"汉族"、"少数民族"和“don’t know”label drop minoritylb //删除标签label dir //再显示标签list //注意到minority 显示的是1,2,3*3.7.7 保存和删除数据文件:save 和erasecompress //压缩数据,使之在不损失任何信息的前提下占用空间最小save mydata //保存数据,数据文件名为mydata*如果同一文件夹下已经存有mydata.dta,而你又要再次执行save mydata 时,系统会出现提示save mydata*该提示表示数据已经存在,此时我们可以换名保存save mydata1*或者将原文件覆盖,方法是加上replace 选项save mydata, replace*删除文件,eraseerase mydata1.dta*注意:删除文件时一定要带上后缀名。Chapter4 数据整理4.1 拆分与连接数据文件要掌握的命令为了折分或合并数据文件,要掌握下面的命令。这也是该小节的学习目标。4.2 案例:拆分与连接数据4.2.1 横向拆分数据要完成的任务(任务4.1)将mydata 数据分成三个数据文件,分别为学生基本信息文件student.dta, 经济学成绩文件economy.dta 和数学成绩文件math.dta。原始数据文件mydata.dta将要新生成的三个数据文件如下student.dtaeconomy.dtamath.dta横向拆分数据案例的参考操作*-将mydata 拆分成学生基本信息数据文件student--------------------cd d:/mydata/ //在d:/mydata 文件夹下操作use mydata, clear //打开前面已经创建的数据文件drop economy math //删除economy 和math 这两个变量save student, replace //将删除后的数据集命名为student,并保存到当前路径*-将mydata 拆分成经济学成绩数据文件economy--------------------use mydata, clear //打开第3 讲已经创建的数据文件keep id economy //仅保留id 和economy 这两个变量在当前数据集中save economy,replace //将当前数据集重新命令为economy,并保存到当前路径*--将mydata 拆分成数学成绩数据文件math--------------------use mydata, clearkeep id mathsave math,replace4.2.2 纵向拆分数据要完成的任务(任务4.2):将mydata 数据分成二个数据文件,分别为女生数据集female.dta 和男生数据集 male.dta。 原始数据同上。该任务完成后将要形成的数据如下female.dtamale.dta纵向拆分数据案例的参考操作*----------------将mydata 拆分成女生数据集female--------------------use mydata, clear //打开第3 讲已经创建的数据文件keep if gender==0 //仅保留女生的记录在当前数据集中save female, replace*----------------将mydata 拆分成女生数据集male--------------------use mydata, cleardrop if gender==0 //将所有女生的记录全部从当前数据集中删除save male, replace4.3 案例:连接数据文件4.3.1 纵向合并数据要完成的任务(任务4.3):将女生数据集female.dta 和男生数据集 male.dta合并为新的数据集mydata1 原始数据同上。纵向拆分数据案例的参考操作*-将女生数据集female 和男生数据集male 合并为新数据mydata1--------use male, clear //打开记录男生信息的数据文件maleappend using female //将记录女生信息的female 文件追加到当前数据集中save mydata1, replace4.3.2 横向合并数据要完成的任务(任务4.4):将学生基本信息数据集student.dta 和数学成绩math.dta,经济学成绩economy.dta 合并为新的数据集mydata2. 原始数据同上。横向拆分数据案例的参考操作*---------将学生基本信息和学习成绩合并成新数据mydata2---------use economy,clear //打开经济学成绩数据文件sort id //按学号排序save economy, replace //重新保存一下use student,c clear //打开学生基本信息数据文件sort id //按学号排序merge id using economy //以学号为关联,将学生的信息和成绩一一对应对接tab _merge //显示对接情况,3 表示成功对接,1 和2 表示未成功对接drop _merge //去掉标识对接是否成功变量_mergesort id //去掉变量_mergesave mydata2,replaceuse math,clearsort idmerge id using mydata2 //用学号关联,将mydata2 与数学成绩math 一一对接drop _mergesave mydata2, replace4.4 数据重整4.4.1 要掌握的命令要掌握下面的命令。4.4.2 案例:面板数据重整任务4.5 数据集mywide.dta 共有六个变量,其中后四个变量分别为2003 年和2004 年的数据成绩和经济学成绩,现要求将数据转化为mylong.dta 的格式,将年份单独做成变量,数学和经济学成绩则成为两个单独变量。原始数据mywide.dta转换后的数据mylong.dta重整参考操作*---------将学习成绩数据集mywide 变换形式---------use mywide, clearreshape long math economy, i(id name) j(year) //数据重整,宽变长save mylong, replace*---------将学习成绩数据集mylong 变换形式---------reshape wide*或者use mylong, clearreshape wide math economy, i(id name) j(yearr) //数据重整,长变宽save mywide2, replace4.4.3 案例:多列数据转为少数几列任务4.6 以下数据集虽然有很多列,但实际上只有一个变量,将该数据复制到stata 并转化成一项数据重整参考操作*---------将多列数据变一列---------*先将原始数据复制粘贴到STATA 中stack var1-var6, into(x) cleardrop _stack4.5 案例:数据转置任务4.7 :将下面的数据行列互换原始数据math.dta互换后的数据应该为:newmath.dta转置参考操作*---------转置---------use math,clearxpose, clear4.6 字符运算clearinput str15 x"10*123""543*21""12*422""43532*32134""4349*1"endgen a=strpos(x,"*")gen b=substr(x,1,a-1)gen c=substr(x,a+1,.)l
展开阅读全文
  语墨文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:Stata学习进步文本笔记.doc
链接地址:http://www.wenku38.com/p-145369.html

                                            站长QQ:1002732220      手机号:18710392703    


                                                          copyright@ 2008-2020 语墨网站版权所有

                                                             经营许可证编号:蜀ICP备18034126号

网站客服微信
收起
展开