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 //简写前提是不引起混淆。执行这个命令将出现错误信息 unrecognized command: s 变量的省略规则 只要不引起歧义,命令可以尽量只写前几个字母。如summarize只需要前两个字母su;而list只需要写第一个字母l。在帮助文件中,命令下面有小划线,该线表明了命令可以省略到什么程度。如 list [varlist] [if] [in] [, options] summarize [varlist] [if] [in] [weight] [, options] 练习:请用list进行仿照练习。 中国人民大学 陈传波
chrisccb
STATA十八讲:2命令语句
注意,在用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*来表示。 变量名称 除以下字符不能用作变量名外,任何字母、字母与数字(单独的数字也不允许)组合均可用做变量名: _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] 先看下面的例子,在汽车数据集中,有一个变量foreign,该变量表示某个车是进口车(1 Foreign)还是国产车(0 Domestic)。如果我们需要知道车的平均价格和重量,则 . use auto, clear . sum price weight
*如果需要分别知道国产车和进口车的价格和重量,可以采用分类操作来求得,
中国人民大学 陈传波
chrisccb
STATA十八讲:2命令语句
. 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 //再比较一下两个变量,相等。
中国人民大学 陈传波
chrisccb
STATA十八讲:2命令语句
运算符一览表 代数运算 + - * / ^ sqrt() ~= +
加 减 乘 除 指数 开方 不等于 字符相加 ! ~ | & 逻辑运算 不 不 或 和 > < >= <= == != ~= 比较关系 大于 小于 不小于 不大于 等于 不等于 不等于 检验上表中的运算符,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万元的进口车(同时满足两个条件),则
中国人民大学 陈传波
chrisccb
STATA十八讲:2命令语句
. 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年湖北省高考0分及以上成绩一分一段的人数统计,第一列score为高考分数,第二列num为该分数段的人数。现在我们要求0分及以上考生的平均分数。 score num 650 9 8 7 6 5 4 3 2 1 0
193 26 23 16 21 26 32 23 38 29 38 操作:
先将上面的表格复制,然后进入STATA,执行如下命令 . clear //清空STATA . edit
然后把光标定位在表格的第一行第一列,点右键,选择粘贴(paste),上表数
中国人民大学 陈传波
chrisccb
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务