Chapter1——STATA命令语句
Chapter1——STATA命令语句
0. 命令语句通式
[by varlist:] command [varlist][=exp][if exp][in range][weight][,options]
[ ]
表示的是可有可无的项,只有command
是必不可少的部分
1. 命令command
sysuse auto.dta,clear
*描述汇总观察值的个数、平均值、方差、最大值和最小值
summarize
list
2. 变量varlist
varlist
表示的是在这个command
运行下一个或者多个变量,多个变量之间用空格隔开
sysuse auto.dta,clear
*对price和make两个变量进行汇总描述
summarize price make
变量名称命名要求:
- 第一个字母可以是英文字母,但是不可以是数字
- 最多只能包括32个英文字母、数字或下划线
- Stata保留了很多以"_"开头的内部命令和变量,所以最好不要用下划线作为第一个字母来定义变量
- 以下字符不可以用作变量名外,任何字母、字母和数字的组合(单独的数字不被允许)均可用作变量名。_all、 _b、 _byte _coef、 _cons、double、 float、if、in、int、long、_n、 _N、 _pi、 _pred、 _rc、 _see、 _skip、using with
3. 分类操作by varlist
在auto.dta
的数据集中,有一个变量是foreign
,该变量表示的是某个车是进口车Foreign=1
,还是国产车Domestic=0
。如果我们需要知道车的平均价格和重量:
sysuse auto.dta,clear
sum price weight
*对整个数据集中二分类变量分开,分别做sum
by foreign: sum price weight
*利用sort对price进行排序且分类,会报错(错误做法)
sort price
by foreign: sum price weight
*应该是先分类后再排序才是正确做法
by foreign,sort: sum price weight
sort
的用法:对数据集中某个变量的定量数据进行排序,只能对数据进行从低到高的排序
gsort
的用法: Ascending and descending
sort,可以设置+
和-
进行升序和降序的排列
*syntax:
sort varlist [in] [, stable]
gsort [+|-] varname
*对数据进行升序排列
sort price
gsort +price
*对数据进行降序排列
gsort -price
4. 赋值及运算=exp
改选先主要用于给新变量复制或者替换原变量的值,例如:生成一个新的价格变量,该变量的取值为原汽车价格变量price的基础上加10元
sysuse auto.dta,clear
*生成一个新的变量nprice,然后给赋值为price+10,然后对price和新生成的nprice进行list
gen nprice=price+10
list price nprice
*使用replace对nprice的变量进行替换为nprice-10,然后对price和替换后的nprice进行list
replace nprice=nprice-10
list price nprice
5. 条件表达式if exp
如果只想要查看auto.dta
中的国产车的品牌和价格,则需要加入筛选条件if foreign==
*只查看国产车的价格和品牌
list make price if foreign==0
*只看价格超过10000元的进口车(需要满足两个条件)
list make price if foreign==1&price>10000
*只看价格超过10000元或者是进口的车(两个条件只需要满足一个)
list make price if foreign==1|price>10000
*分类型查看价格超过10000元的汽车的品牌和价格
by foreign:list make price if price>10000
6. 范围筛选in range
如果想要价格较低的前十台车的平均价格,则需要先按照价格排序,然后使用in
对价格从升序的前十辆车的价格求平均值
sort price
list price in 1/10
sum price in 1/10
*要计算前十台车中国产车的平均价格
sum price in 1/10 if foreign==0
7. 加权weight
下表是 2005 年湖北省高考 640 分及以上成绩一分一段的人数统计,第一列 score 为高考分数,第二列 num 为该分数段的人数。现在我们要求 640 分及以上考生的平均分数。其实就是分数段下的人数除以总人数得到该分数段的权重。
score | num |
---|---|
650 | 193 |
649 | 26 |
648 | 23 |
647 | 16 |
646 | 21 |
645 | 26 |
644 | 32 |
643 | 23 |
642 | 38 |
641 | 29 |
640 | 38 |
clear
*打开数据编辑器
edit
*此时对各个分数段的成绩赋予相同的权重求平均值
sum score
*以每个分数段先的人数作为该分数的权重,来加权求平均值
sum score[weight=num]
8. 其他可选项,options
许多命令都会有一些可选项,可以对数据进行一个更加细致的描述和统计分析
sum score,detail
sysuse auto.dta,clear
*对前10个数据的观察值每10个添加一个横线
list price in 1/30,sep(10)
*对10~30个数据的观察值每2个添加一个横线
list price in 10/30,sep(2)
*不要表头
list price,nohead