美文网首页stata小小白
012 Stata:排序与分组

012 Stata:排序与分组

作者: 凡有言说 | 来源:发表于2019-07-17 20:59 被阅读17次

主要是sortgsortbysort三个命令

1.sort 升序

sort varlist [in] [, stable]

sysuse auto, clear
keep make price mpg length foreign

*对一个变量排序
sort make //对make进行升序排列
list

sort mpg //对mpg进行升序排列
list

*对多个变量排序
sort mpg length //先对mpg进行排序,再对length排序
list
sort length mpg //先对length进行排序,再对mpg排序
list

2.gsort 升序/降序

gsort [+|-] varname [[+|-] varname ...] [, generate(newvar) mfirst]

sysuse auto, clear
keep make price mpg length foreign

*对一个变量排序
gsort +make //升序排列,等价于gsort make 和 sort make
list
gsort -make //降序排列
list

*对多个变量排序
gsort -mpg -length //先对mpg进行排序,再对length排序(均为降序排列)
list
gsort -length mpg //先对length进行排序(降序),再对mpg排序(升序)
list

3.bysort 分组 排序

bysort varlist: stata_cmd
bysort varlist1 [(varlist2)] [, rc0]: stata_cmd

sysuse auto,clear
by foreign : sum price mpg length weight rep78  //分组描述性统计

sort rep78
by rep78 : sum price mpg length weight  //分组之前,必须先进行排序

by rep78,sort : sum price mpg length weight

bysort rep78 : sum price mpg length weight

*bysort可以简写为by


clear
input str2 v1 v2
A 3
B 4
A 1
A 1
A 2
B 5
end
bysort v1 v2 : gen num1 = _N //对v1、v2进行排序并分组,生成num1等于某组的观测值总数
bysort v1(v2): gen num2 = _N //v2只排序,不分组,生成num2等于某组的观测值总数

*示例1
*事件研究删除停牌期间事件
use 事件列表,clear
joinby stkcd using 停复牌
gen date1 = date(date,"YMD")
bysort stkcd date : gen num1 = _N 
drop if date1 >= startdate & date1 <= enddate
bysort stkcd date : gen num2 = _N 
drop if num1 != num2
keep stkcd date
duplicates drop

*示例2
*赫芬达尔指数(HHI)的计算
clear
use 赫芬达尔指数,clear
sort year industry
bysort year industry: egen sumsize = sum(资产总计) //egen与sum搭配时,生成的是列总和,而gen与sum搭配时生成的是列累积和。
gen ratio = (资产总计/sumsize)^2
bysort year industry: egen HHI = sum(ratio)
drop sumsize ratio

城市排序

use 城市列表, clear
replace city = ustrfrom(city,"gb18030",1)
sort city //在stata14、stata15中,汉字的排序按照utf-8编码顺序

参考资料:
【爬虫俱乐部】精通Stata之数据整理

相关文章

网友评论

    本文标题:012 Stata:排序与分组

    本文链接:https://www.haomeiwen.com/subject/nxthlctx.html