统计数据的唯一观测值数量

type
status
date
slug
summary
tags
category
icon
password
网址
作者
标签
文章链接
发布时间
来源
在基于面板数据的实证研究中,我们时常需要统计某一列数据的唯一值(独特值)数量,例如不同上市公司的总数。通常有以下几种方法:

1. 使用 distinct 命令 (推荐,需要安装)

distinct 命令是用户编写的外部命令,但它非常方便和常用。
  • 安装 distinct 命令 (如果尚未安装):
    • ssc install distinct
  • 统计 ID 列的唯一值数量:
    • distinct id_column_name
      Stata 会在结果中直接显示 id_column_name 的唯一值数量。

2. 使用 codebook 命令

codebook 命令可以为变量提供详细的描述性统计信息,其中就包括独特值的数量。
  • 统计 ID 列的独特值数量:
    • codebook id_column_name
      在输出中,你会看到 "Unique values" 行,后面跟着数量。

3. 使用 egen, tag()count

这是一种更基础但同样有效的方法,不需要安装额外的命令。它利用了 egen 命令的 tag() 函数来标记每个唯一组的第一个观测,然后计算这些标记。
  • 步骤:
      1. 标记每个唯一 ID 的第一个观测:
        1. egen tag_id = tag(id_column_name)
          这会创建一个名为 tag_id 的新变量。对于每个 id_column_name 的第一个出现,tag_id 的值为 1;对于同一 ID 的后续出现,其值为 0。
      1. 计数 tag_id 为 1 的观测数量:
        1. count if tag_id == 1
          count 命令会直接显示满足条件的观测数量,这就是你的独特 ID 数量。
  • 一步到位 (如果你不需要保留 tag_id 变量):
    • bysort id_column_name: gen byte is_first = (_n == 1) count if is_first == 1 drop is_first // 如果不再需要这个临时变量
      这里的 bysort id_column_name: gen byte is_first = (_n == 1)egen tag_id = tag(id_column_name) 的效果类似,都是标记每个组的第一个观测。_n == 1 是在 by 组内判断当前观测是否是该组的第一个观测。

选择哪种方法?
  • 对于快速查看,distinct id_column_namecodebook id_column_name 是最简单直接的。
  • 如果你需要在代码中进一步使用这个数量(例如,保存为宏),那么 egen tag_id = tag(id_column_name) 后跟 count if tag_id == 1 是很好的选择,因为 count 命令会将结果存储在 r(N) 中。例如:
    • egen tag_id = tag(id_column_name) count if tag_id == 1 local num_unique_ids = r(N) display "独特ID的数量是: `num_unique_ids'"
Prev
绩效反馈研究:如何计算参考值
Next
Stata18的绘图风格变化
Loading...
Article List
Practice makes perfect
文献集锦
如何理论创新?
管理学理论集锦
Python实际应用
聚类标准误与固定效应
巫师3:狂猎
Stata应用技巧
Python知识与技巧
双重差分法(DID)
创新文献阅读与摘要
计量经济学
Python绘图相关