Stata:变量非重复值统计-distinct

发布时间:2021-09-02 阅读 2308

Stata连享会   主页 || 视频 || 推文 || 知乎 || Bilibili 站

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc, ihelp, rdbalance, gitee, installpkg

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

PDF下载 - 推文合集

作者:左祥太 (武汉纺织大学)
邮箱Shutter_Z@outlook.com


目录


1. distinct 命令

distinct 命令主要用于报告不同观测值的数量,例如,某个变量的观测值为 (1, 2, 2, 3, 3, 3, 4, 4, 4, 4),则 distinct 命令返回 4,即该变量仅存在 4 个不同的观测值。

*命令安装
cnssc install distinct, replace
*命令语法
distinct [varlist] [if] [in] [, missing abbrev(#) joint minimum(#) maximum(#)]

其中,

  • missing:表示包括缺漏值,默认不包括;
  • abbrev:定义显示变量的最大字符,比如字符串 happiness 的长度是 9,利用 abbrev(5) 转换后,就会变为 hap~s
  • joint:根据 varlist 中所有变量分析观测值差异;
  • minimum:表示可返回变量的最小不同观测值数;
  • maximum:表示可返回变量的最大不同观测值数。

2. Stata 实例

接下来,以「auto.dta」数据为例进行演示:

. sysuse auto.dta, clear
. des
. distinct

              |        Observations
              |      total   distinct
--------------+----------------------
         make |         74         74
        price |         74         74
          mpg |         74         21
        rep78 |         69          5
     headroom |         74          8
        trunk |         74         18
       weight |         74         64
       length |         74         47
         turn |         74         18
 displacement |         74         31
   gear_ratio |         74         36
      foreign |         74          2

可以看出,make 一共有 74 个观测,并且有 74 个不同的观测值。rep78 变量仅有 69 个观测,说明存在 5 个缺失值,并且该变量也恰好有 5 个不同的观测值。其余变量以此类推……

进一步,关于 distinct 命令选项的具体介绍如下:

. *max 与 min
. distinct, max(10)

              |        Observations
              |      total   distinct
--------------+----------------------
        rep78 |         69          5
     headroom |         74          8
      foreign |         74          2

max(10) 选项限定返回变量的不同观测值数小于等于 10。

. distinct, min(10)

              |        Observations
              |      total   distinct
--------------+----------------------
         make |         74         74
        price |         74         74
          mpg |         74         21
        trunk |         74         18
       weight |         74         64
       length |         74         47
         turn |         74         18
 displacement |         74         31
   gear_ratio |         74         36

min(10) 选项限定返回变量的不同观测值数大于等于 10。

. distinct rep78, missing

       |        Observations
       |      total   distinct
-------+----------------------
 rep78 |         74          6

missing 选项可以将缺失值包括在观测值统计范围内,通过对比可以发现,rep78 的不同观测值由之前的 5 变成了 6。

. distinct, joint

  Observations
  total   distinct
    69         69

joint 选项可以对所有变量观测值联合进行分析,可以发现,在不考虑缺失值的情况下,该数据集包括 69 个观测,且这个 69 个观测都不存在重复。

. distinct headroom, abbrev(6)

        |        Observations
        |      total   distinct
--------+----------------------
 head~m |         74          8

abbrev(6) 选项指定变量名的最大字符显示数为 6。

3. 应用场景

3.1 循环中的使用

forvalues 循环当中,我们经常需要确定循环最大值的数字,这个时候就可以使用 distinct 命令来确定不同观测值的最大数量,以便我们进行分组循环。假设这样一个场景,我们需要对每家公司按照其所在行业进行分组求得某种盈余管理 DACC 的数值,但面对上千家上市公司,直接数数或许并不是一种明智的选择,这时便可以利用 distinct 命令。

/* 循环中的 distinct */
/*	Notes:
	year 	表示对应年份
	stock   表示公司股票代码
	sic     表示公司行业代码
*/

egen egen sic_year = group(sic year), label lname(sic_year)
distinct sic
local n = r(ndistinct)	// r(ndiatinct) 为 distinct 的返回组数
gen DACC = .

forvalues i = 1(1)`n'{
  qui reg acc invA Dsale PPE if (sic_year==`i'), nocons
  qui predict e if e(sample), res
  qui replace DACC = e if e(sample) 
  drop e
}

3.2 快速剔除变量中的缺漏值

· sysuse auto.dta, clear
. distinct

              |        Observations
              |      total   distinct
--------------+----------------------
         make |         74         74
        price |         74         74
          mpg |         74         21
        rep78 |         69          5
     headroom |         74          8
        trunk |         74         18
       weight |         74         64
       length |         74         47
         turn |         74         18
 displacement |         74         31
   gear_ratio |         74         36
      foreign |         74          2
 
//不难发现,在 auto.dta 这一份数据当中仅有 rep78 这一变量当中存在缺漏
//所以仅需要如下操作即可去除缺漏值

. drop if rep78 == .
(5 observations deleted)

4. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 循环 滚动 重复值 盈余管理, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,400+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxh 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh