codebook
是Stata中的一个伟大命令。它描述数据内容也只是标识唯一值在Stata中计算唯一值
sysuse auto, clear
codebook mpg, compact
英里的唯一值数为21综观命令的帮助下,它似乎并不可能存储该值。我错了吗?
我知道有其他方法可以计算Stata中的number of unique values,但将此功能添加到codebook
命令中会很方便。
codebook
是Stata中的一个伟大命令。它描述数据内容也只是标识唯一值在Stata中计算唯一值
sysuse auto, clear
codebook mpg, compact
英里的唯一值数为21综观命令的帮助下,它似乎并不可能存储该值。我错了吗?
我知道有其他方法可以计算Stata中的number of unique values,但将此功能添加到codebook
命令中会很方便。
您可以轻松地编写一个包装为使用尼克的distinct
命令从SSC来存储你想要的标量(S)的信息codebook
。
根据我的经验,这种包装方式已经被证明是远远超过要求在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
最后这部分会给你:
. 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
然后,您可以做喜欢的东西(或者不管它是什么,你想这些做):
gen x=r(nv_rep78)
这是一个很好的解决方案,谢谢。 – emeryville
“distinct”的最新版本(作者Gary Longton和我)将从_Stata Journal_网站下载。在Stata中搜索独特的sj来获取安装链接。 –
是的,你是错的
ssc install egenmore
egen unique_values=nvals(mpg)
我恐怕我没有错!谢谢,但我有兴趣在'codebook'之后存储这个值,这似乎是不可能的。看Nick的答案。 – emeryville
您基本上可以手动重现每个码本的输出。和nvals给你thr唯一值 –
这不会提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 - [来自评论](/ review/low-quality-posts/12412472) –
'codebook'不会保存它报告为唯一值的数量。有关此领域的评论,请参阅http://www.stata-journal.com/sjpdf.html?articlenum=dm0042 –
感谢Nick提供的有用参考资料。 – emeryville