Stata如何获取一组变量的不重复记录数?

我们之前分享了如何获取单个变量下的不重复记录数,如果想得到各个省份下具体城市个数,该怎么做?

数据准备,Stata代码如下:

clear
input province  city  inputx
11        1101        1
11        1101        2
11        1101        3
11        1101        4
11        1101        5
11        1102        1
11        1102        2
11        1102        3
11        1102        4
11        1103        1
11        1103        2
11        1103        3
11        1103        4
11        1103        5
12        1201        1
12        1201        2
12        1201        3
12        1201        4
12        1201        5
12        1201        6
12        1201        7
12        1201        8
12        1202        1
12        1202        2
12        1203        1
12        1204        1
12        1204        2
12        1204        3
12        1204        4
13        1301        1
13        1301        2
13        1301        3
13        1301        4
13        1301        5
13        1301        6
13        1301        7
13        1301        8
13        1301        9
13        1302        1
13        1302        2
13        1302        3
13        1302        4
13        1302        5
13        1302        6
13        1302        7
13        1302        8
13        1302        9
13        1302        10
13        1302        11
13        1302        12
13        1302        13
13        1302        14
13        1302        15
13        1302        16
13        1302        17
13        1302        18
13        1302        19
13        1302        20
13        1302        21
end

我们可以使用以下Stata代码获得:


bysort province city : gen cityid=_n
*因为Stata17开始,table命令进行了重构,所以旧版table命令前需加上版本号
version 16:table  province if cityid==1,contents(n city) 

旧版table命令结果如下:


----------------------
 province |    N(city)
----------+-----------
       11 |          3
       12 |          4
       13 |          2
----------------------

Stata17重构的新版Stata命令也可完成类似功能,Stata代码如下:

*Stata17及以后的新版table命令如下
table province if cityid==1,stat(count city )

新版table命令结果如下:


---------------------------------------
         |  Number of nonmissing values
---------+-----------------------------
province |                             
  11     |                            3
  12     |                            4
  13     |                            2
  Total  |                            9
---------------------------------------

我们还可以使用count命令来实现,Stata代码如下:


bys province: count if cityid==1

结果如下:


--------------------------------------------------------------
-> province = 11
  3
---------------------------------------------------------------
-> province = 12
  4
----------------------------------------------------------------
-> province = 13
  2

Michael Hills开发了一个Stata社区命令unique,用来简化此操作,安装unique的Stata命令如下:


ssc install unique, replace

获取各个省份下具体城市个数,Stata代码如下:


unique city , by( province )
*如果要查看详细信息,可加上detail选项
unique city , by( province ) detail
*如果要替换默认的_Unique变量,可加上gen选项
unique city , by( province ) gen(n_city_p)

结果如下:


Number of unique values of city is  9
Number of records is  59
variable _Unique contains number of unique values of city by province

  +--------------------+
  | province   _Unique |
  |--------------------|
  |       11         3 |
  |       12         4 |
  |       13         2 |
  +--------------------+

也可以通过list命令获取上述结果,Stata代码如下:


list province n_city_p if !missing(_Unique)

完,本文内容交流请移步:http://www.epiman.cn/thread-139906-1-1.html