统计Stata中的唯一值

eme*_*lle 5 unique count stata

codebook在 Stata 中是一个很棒的命令。它描述了数据内容,但也简单地标识了唯一值

sysuse auto, clear
codebook mpg, compact
Run Code Online (Sandbox Code Playgroud)

mpg 的唯一值数为 21。查看命令的帮助,似乎无法存储此值。我错了吗?

我知道在 Stata 中计算唯一值数量的其他方法,但是将此功能添加到codebook命令中会非常方便。

Dim*_*rov 5

您可以轻松地编写一个包装器codebook,使用distinct来自 SSC 的Nick命令将您想要的信息存储为标量。

根据我的经验,这种包装方法已被证明比要求 StataCorp 的好人在他们不参与的互联网论坛上更改他们的命令要有效得多。

下面是一个例子:

* (1) You can stick this into a file called mycodebook.ado in
* /ado/personal (use adopath to see exact location)
capture program drop mycodebook
program mycodebook, rclass
syntax [varlist] [if] [in][, *]
codebook `varlist' `if' `in', `options'
capture ssc install distinct
foreach var of varlist `varlist' {
    qui distinct `var' `if' `in'
    return scalar nv_`var' = r(ndistinct)
}
end

* (2) example with mycodebook
sysuse auto, clear
mycodebook price mpg rep78 if foreign==0, compact
return list
Run Code Online (Sandbox Code Playgroud)

最后一部分将为您提供:

. mycodebook price mpg rep78 if foreign==0, compact

Variable   Obs Unique      Mean   Min    Max  Label
----------------------------------------------------------------------------------
price       52     52  6072.423  3291  15906  Price
mpg         52     17  19.82692    12     34  Mileage (mpg)
rep78       48      5  3.020833     1      5  Repair Record 1978
----------------------------------------------------------------------------------

. return list

scalars:
           r(nv_rep78) =  5
             r(nv_mpg) =  17
           r(nv_price) =  52
Run Code Online (Sandbox Code Playgroud)

然后你可以做这样的事情(或者你想做的任何事情):

gen x=r(nv_rep78)
Run Code Online (Sandbox Code Playgroud)

  • 最新版本的“distinct”(作者 Gary Longton 和我自己)将从 _Stata Journal_ 网站下载。在 Stata 中搜索 distinct, sj 以获取安装链接。 (4认同)