STATA入门2 命令语句

  • 格式:doc
  • 大小:75.00 KB
  • 文档页数:5

2命令语句
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] . use auto, clear//打开美国汽车数据文件auto.dta,后面的clear表示先清除内
存中可能存在的数据集
. summarize /*很多命令可单独使用,单独使用时,一般是对所有变量进
行操作,等价于后面加上代表所有变量的_all。

*/ . summarize _all //注意到该命令输出结果与上一个命令完全一样
. sum //与前一命令等价,sum为summarize的略写
. su // su是summarize的最简化略写,不能再简化为s
. s //简写前提是不引起混淆。

执行这个命令将出现错误信息
注意,在用list做练习的时候可能会遇到结果窗口停止,其右下角出现一个蓝色的“more ‘,按键盘上任何一个键,屏幕滚动一行。

这一现象与第一讲中“set more on”的设置有关,请参考1.6.1
2.3变量varlist
[by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [, options]
varlist表示一个变量,或者多个变量,多个变量之间用空格隔开。

. use auto, clear
. sum price //求价格的观察值个数,平均值,方差,最小值和最大值. su p //变量和命令均可略写,注意到两个结果完全一样
. su t //分数据中有两个变量的开首字母为t(trunk和turn),所以
STATA认为t为模糊的省略。

m ambiguous abbreviation 红色为错误信息
. sum trunk turn //求trunk和turn变量的五数概略统计
. su t* //等价于前一命令,以t开首的所有变量可用t*来表示。

2.4 分类操作by varlist
[by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [, options]
先看下面的例子,在汽车数据集中,有一个变量foreign,该变量表示某个车是进口车(1 Foreign)还是国产车(0 Domestic)。

如果我们需要知道车的平均价格和重量,则
. use auto, clear
. sum price weight
*如果需要分别知道国产车和进口车的价格和重量,可以采用分类操作来求得,
. 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。

. sort - price //按价格从高到低排序
. sort foreign -price /*先把国产车都排在前,进口车排在后面,然后
在国产车内容再按价格从大小到排序,在进口车
内部,也按从大到小排序*/
2.5 赋值及运算=exp
[by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [, options]
该选项主要用于给新变量赋值或替换原变量的值
例:生成一个新的价格变量nprice,该变量的取值为原汽车价格变量price的基础上涨价10元
. 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//再比较一下两个变量,相等。

检验上表中的运算符,di是display命令的略写
. di 4-2 //输出2
. di 3*5 //输出15
. di 8/2 //8除以2,输出4
. di 2^3 //2的立方,输出8
. di –(2+3^(2-3))/sqrt(2*3) //特号运算优先,想一想,结果应为多少?
. di 3<5 //输出结果为1,意味着3小于5为真
. di 3>5 //输出的结果为0,意味着3大于5为假。

2.6 条件表达式if exp
[by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [, options]
例:只查看国产车的品牌和价格,则加入筛选条件if foreign==0 */ . 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>10000
2.7 范围筛选in range
[by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [, options]
如果要计算较低的前10台车的平均价格,则要先按价格排序,然后仅对前10个车的价格求平均值
. sysuse 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==0
2.8 加权weight
[by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [, options]
下表是2005年湖北省高考640分及以上成绩一分一段的人数统计,第一列score 为高考分数,第二列num为该分数段的人数。

现在我们要求640分及以上考生的
操作:
先将上面的表格复制,然后进入STATA,执行如下命令
. clear //清空STATA
. edit
然后把光标定位在表格的第一行第一列,点右键,选择粘贴(paste),上表数。