Stata学习笔记 下载本文

. 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>10000

2.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==0

2.8 加权weight

[by varlist:] command [varlist] [=exp] [if exp] [in range] [weight] [, options]

任务:下表是2005 年湖北省高考640 分及以上成绩一分一段的人数统计,第一

列score 为高考分数,第二列num 为该分数段的人数。现在我们要求640 分及以

上考生的平均分数。 score num

650 193 649 26 648 23 647 16 646 21 645 26